在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
开源软件名称:IDP2-OIDC-NativeApp-Android开源软件地址:https://gitee.com/bjzyt/IDP2-OIDC-NativeApp-Android开源软件介绍:OIDC_Native_SDK-Android开发文档1简介1.1目的本文档旨在为Android开发者提供详细的OIDC_Native_SDK集成指南。其中包含Jar包导入指南、资源导入指南、API说明和调用示例等。OIDC_Native_SDK+RP Server可以实现在IDP身份管家直接打开指定APP实现免密码登录。 1.2范围本文档用于期望集成九州云腾OIDC_Native_SDK的开发人员,为其提供简明清晰的集成指南,让他们能迅速将OIDC_Native_SDK集成到自己的OIDC协议的项目中。 1.3实现原理第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 2准备工作2.1服务端添加应用Android FacetId为AndroidMainfest中配置的,请按照配置的要求进行配置。服务端要与客户端保持一致 。 2.2添加账号关联子账号:关联APP的登录账号 3集成指南3.1导入SDK包复制libsoidc_native_sdk1.0.jar到工程libs/目录下 3.2配置AndroidManifest.xml申请访问网络权限 <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位的英文字母组成的字符串) 3.3工程中添加代码初始化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) @Overrideprotected 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; } 4API初始化OIDC_Native_SDKpublic static void init(Context context) 参数说明:Context context : 应用的context方法说明:init只需要在应用程序启动时调用一次即可,这样就可以使用OIDC_Native_SDK的所有功能了。 5代码混淆如果您启用了代码混淆,请在您的 proguard-rules.pro 中添加以下代码 -keep class com.idsmanager.ssosublibrary.** { *;}-dontwarn com.idsmanager.ssosublibrary.** 6系统版本支持目前SDK 支持 Android 4.0及以上版本的手机。如需更多技术支持,请联系[email protected],或致电 010-58732285。 |
请发表评论