criipto 验证- expo
Idura 校验 Expo SDK 允许您的用户与许多欧洲的 eID 提供者进行认证 。 它允许您的申请作为 公共客户端意思是它不使用客户秘密 而是使用 捷克 以确保恶意行为者无法拦截授权代码.
除了基本的OIDC流量,SDK还支持 应用程序切换。 。 。 .
所需资源
- 曝光 SDK 54个或较新 (舰只反应原生0.81 /克特林 2.1.20 / AGP 8.11).
- 机器人
minSdkVersion26个或较新。 博览会的预建默认值为 24, 所以你必须明确选择通过expo-build-properties看到了吗 安装。 。 。 . - iOS系统 17.4 或更新,与
use_frameworks! :linkage => :dynamic. Idura 校验 iOS SDK 作为 Swift 软件包分发,需要动态框架链接. 博览会插件通过expo-build-properties。 。 。 . - 这个模块包括了本土代码,因此不会与"博览会Go"合作. 比如说,你必须用一个建筑
npx expo run:ios编号 :npx expo run:android或EAS Build. (英语).
两个平台都派代表到本地的Idura验证SDKs(机器人, (中文(简体) ), iOS系统) (中文(简体) ). 旧的博览会发行量的消费者应保持 @criipto/verify-expo 3.x (中文(简体) ).
安装
npm install @criipto/verify-expo expo-build-properties
初始化
SDK需要配置两条信息:
- 你的"偶像"域名.
- 你的偶像客户身份证.
SDK假设:
- 你会用你的 Idura 域名 ,以主机运行您的重定向 URL(既可以使用自定义域, *.criipto.id, 也可以使用 *.idura. 经纪域).
- 您的重定向 URL 将是
https://[YOUR IDURA DOMAIN]/[ios|android]/callback目前,不支持自定义重定向 URL 。 需要的话就打开一个问题.
您应该注册在 偶像仪表板。如果您的域为 https://samples.criipto.id,您应当同时注册 https://samples.criipto.id/ios/callback 财务报告和审定财务报表 https://samples.criipto.id/android/callback。 。 。 .
然后配置两个插件在 app.json。 。 。 . expo-build-properties 必须显示 在此之前 @criipto/verify-expo 因此,它首先被应用:
"plugins": [
["expo-build-properties", {
"android": { "minSdkVersion": 26 },
"ios": { "useFrameworks": "dynamic", "deploymentTarget": "17.4" }
}],
["@criipto/verify-expo", {
"domain": "YOUR_IDURA_DOMAIN",
"clientID": "urn:my:application:identifier:XXXX"
}]
]
插件失败 expo prebuild 如果其中任何一项要求未得到满足,则有方便复制的错误.
开始
打电话 login() 直接——没有供货商或接通电线. 配置( E)domain, (中文(简体) ), clientID生活在这里 app.json 并被本地模块读取。 将结果保存在自己的状态( A)useStatezustand,反应-平稳——你的电话),因为包裹没有为你保留一个:
// src/LoginButton.jsx
import { useState } from "react";
import { Button, Text } from "react-native";
import { login, OAuth2Error, UserCancelledError } from "@criipto/verify-expo";
export default function LoginButton() {
const [claims, setClaims] = useState(null);
const [error, setError] = useState(null);
const handlePress = async (acrValues) => {
try {
const { id_token, trace_id, claims } = await login({ acrValues });
setClaims(claims);
setError(null);
} catch (e) {
if (e instanceof UserCancelledError) return; // expected; not an error condition
setError(e);
setClaims(null);
}
};
return (
<>
<Button
onPress={() => handlePress("urn:grn:authn:dk:mitid:substantial")}
title="Login with Danish MitID"
/>
<Button
onPress={() => handlePress("urn:grn:authn:se:bankid:same-device")}
title="Login with Swedish BankID"
/>
<Button onPress={() => handlePress("urn:grn:authn:se:frejaid")} title="Login with Freja ID" />
<Button
onPress={() => handlePress("urn:grn:authn:no:bankid:substantial")}
title="Login with Norwegian BankID"
/>
{error ? <Text>An error occurred: {error.toString()}</Text> : null}
{claims ? <Text>{JSON.stringify(claims, null, 2)}</Text> : null}
</>
);
}
失败时 login() 扔出已打出的错误 : UserCancelledError 对于拒绝流动的用户, OAuth2Error 对于IP错误, NoSuitableBrowserError (Android- only) 当没有安装自定义 Tab 功能浏览器时, 加上 ModuleNotConfiguredError 编号 : UnknownPromptError 编号 : IduraVerifyInternalError都带着SDK的 trace_id 如果有的话,请在Idura仪表板中找到相关数据.
暖和起来
土生土长的SDK是建立在第一个 login() 调用,即当OIDC发现时,JWKS取取和-在Android上-可使用浏览器的扫描发生. 要删除登录路径, 打电话 warmUp() 从屏幕上记录到的效果中:
import { useEffect } from "react";
import { warmUp } from "@criipto/verify-expo";
useEffect(() => {
warmUp();
}, []);
它完全是可选的,从不扔出,而且不只打一次就便宜了。 因为它没有报告,一个配置错误的应用程序仍然失败 login() 与 ModuleNotConfiguredError ——原生地侧记下原因 CriiptoVerifyExpo 标记(logcat)或通过 NSLog,这样你就可以看到它 同时连接一个集成.
电子会议(仅iOS)
用于显示登录页面的网页视图允许您在ephemeral或共享浏览器会话中选择.
- 届会 与用户的默认浏览器共享不 cookie,因此用户可能必须输入他们的登录细节. 这是默认.
- 共享会议 与用户的默认浏览器共享 cookie,因此登录细节可能在登录之间被记住. 然而,系统每次用户登录时都会呈现一个权限对话框("Your App"想用'idura.broctor'来签名").
默认值是使用平时会话 .
根据您申请的UX要求,由您决定哪个流量更好。 并非所有的eID都要求用户在网页视图中输入任何内容——例如瑞典BankID将用户直接带到他们的认证器应用. 为此原因,您可能也想要使用共享会话来进行一些 eID 而不是其他 。 过 preferEphemeralSession 编辑 login() 调用以覆盖每流 :
await login({
acrValues: "urn:grn:authn:dk:mitid:substantial",
preferEphemeralSession: false, // opt into a shared browser session
});
丹麦 MITID 支持 a 重新校正流量,所以如果需要重新认证用户的MitID,则不需要依赖共享浏览器会话.
在Android上,参数被默默地忽略了:自定义 Tab会话不与浏览器共享饼干,而Android SDK则不暴露选择.
偶像
了解更多关于Idura的信息,并注册到您的免费开发者账户 (原始内容存档于2016-10-12). idura.eu。 。 。 .