本文档旨在为Android开发者提供详细的OIDC_Native_SDK集成指南。其中包含Jar包导入指南、资源导入指南、API说明和调用示例等。OIDC_Native_SDK+RP Server可以实现在IDP身份管家直接打开指定APP实现免密码登录。
本文档用于期望集成九州云腾OIDC_Native_SDK的开发人员,为其提供简明清晰的集成指南,让他们能迅速将OIDC_Native_SDK集成到自己的OIDC协议的项目中。
第1步:登录IDP身份管家,在免登应用中点击需要打开的应用,请求IDP Server去获取rpToken,idToken
第2步:IDP Server校验身份,返回rpToken,idToken给IDP身份管家(rpToken,idToken是客户端请求登录的凭证)
第3步:IDP身份管家通过URL跳转打开集成了OIDC_Native_SDK的APP,IDP身份管家通过URL传递rpToken,idToken给客户端。
第4步:集成了OIDC_Native_SDK的APP通过解析URL获取传过来的rpToken,idToken
第5步:App通过获取到的rpToken,idToken,请求RP Server,进行登录请求
第6步:RP Server接收到请求后,去IDP Server验证rpToken,idToken
第7步:IDP Server 返回验证结果给RP Server
第8步:RP Server 处理IDP Server返回的结果,根据结果返回对应的结果给App
Android FacetId为AndroidMainfest中配置的,请按照配置的要求进行配置。服务端要与客户端保持一致 。
子账号:关联APP的登录账号
复制libsoidc_native_sdk1.0.jar到工程libs/目录下
申请访问网络权限
<uses-permission android:name="android.permission.INTERNET" />
在OIDC协议类型的APP中,设置启动Acitivity的启动模式
android:launchMode="singleTask"
在要启动的Activity中添加一个过滤器,用于和IDP身份管家进行交互,数据传递。android:scheme的值为Android FacetId,请和服务器端保持一致。
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<!--请保持和服务端配置相同
scheme为长度不超过12位的英文字母组成的字符串-->
<data
android:host="OIDCNativeApp"
android:scheme="自定义" />
</intent-filter>
注:Android FacetId=(android:scheme)的值即自定义的内容 (自定义数据为长度不超过12位的英文字母组成的字符串)
初始化OIDC_Native_SDK
在自己定制的Application的onCreate()方法中添加代码进行OIDC_Native_SDK的初始化。只要添加之后便可以使用OIDC_Native_SDK的全部功能了。
RpSSOApi.init(getApplicationContext());
获取rpToken,idToken
执行图中第4步的操作, App在注册的Activity 中解析URL获取rpToken,idToken,vpnVendor,(当前应用使用了VPN功能,则vpnVendor为VPN的厂商名称)获取rpToken,idToken,vpnVendor后进行登录请求。
在onCreate方法中获取。(集成APP无任何后台进程时,获取rpToken,idToken)
Intent intent = getIntent();
if (intent !=null) {
Uri uri = intent.getData();
if (uri != null) {
String rpToken = uri.getQueryParameter("rpToken");
String idToken = uri.getQueryParameter("idToken");
String vpnVendor= uri.getQueryParameter("vpnVendor");
}
}
在onNewIntent方法中获取。(集成APP在后台打开时,获取rpToken,idToken,vpnVendor)
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
setIntent(intent);
Uri uri = intent.getData();
if (uri != null) {
String rpToken = uri.getQueryParameter("rpToken");
String idToken = uri.getQueryParameter("idToken");
String vpnVendor= uri.getQueryParameter("vpnVendor");
}
}
注:rpToken,idToken为验证的重要依据,,请配合服务端的RP Server进行第5步登录请求,登录时rpToken,idToken,必须放到到请求的header中
public static Map<String, String> getHostAuthHeader(String token, String idToken) {
Map<String, String> params = new ArrayMap<>();
params.put("Authorization", "bearer " + token);
params.put("idToken", idToken);
return params;
}
public static void init(Context context)
参数说明: Context context : 应用的context 方法说明: init只需要在应用程序启动时调用一次即可,这样就可以使用OIDC_Native_SDK的所有功能了。
如果您启用了代码混淆,请在您的 proguard-rules.pro 中添加以下代码
-keep class com.idsmanager.ssosublibrary.** {
*;
}
-dontwarn com.idsmanager.ssosublibrary.**
目前SDK 支持 Android 4.0及以上版本的手机。如需更多技术支持,请联系info@idsmanager.com,或致电 010-58732285。
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )