1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/bjzyt-IDP2-OIDC-NativeApp-Android

Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

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)

@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;
    }

4API

初始化OIDC_Native_SDK

public 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及以上版本的手机。如需更多技术支持,请联系info@idsmanager.com,或致电 010-58732285。

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Описание недоступно Развернуть Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/bjzyt-IDP2-OIDC-NativeApp-Android.git
git@api.gitlife.ru:oschina-mirror/bjzyt-IDP2-OIDC-NativeApp-Android.git
oschina-mirror
bjzyt-IDP2-OIDC-NativeApp-Android
bjzyt-IDP2-OIDC-NativeApp-Android
master