文档

OAuth2.0协议对接

更新时间:

对于已有支持OAuth 2.0的鉴权服务器的租户,需要在原有基础上针对外部系统进行接入,从而实现单点登录以及打通企业内部员工基础信息的需求。本文为您介绍OAuth 2.0的鉴权服务器的标准协议。

背景信息

OAuth 2.0是一种用于授权的框架,与OAuth 1.0不同,它无需使用加密签名或密钥交换的方式来验证请求。OAuth 2.0使用访问令牌来授权应用程序从而访问用户的资源。它支持多种授权类型,如授权码(Dataphin目前仅支持授权码模式,这是较为常见的模式)、客户端凭证、密码凭证以及隐式授权等。OAuth 2.0相比OAuth 1.0而言,简化了授权流程、提高了安全性和可扩展性,并提供了更好的用户体验。

使用说明

  • 支持用户认证的方式接入Dataphin,通过认证后即加入除元仓租户以外的所有租户。

  • Dataphin不自动添加该成员到该租户下,需该租户的系统管理员手动添加该用户。

对接方案

接入前准备

  • 您需要先在OAuth服务提供商的网站上注册应用,并获取client ID和client secret信息,此信息将用于应用程序的身份验证和授权。

    配置项

    是否必选

    说明

    client ID

    用于标识身份的客户端ID。

    client secret

    用于身份校验的客户端Secret。

  • 您需编写JSON格式配置文件并进行base64编码。

编写配置文件

编写JSON格式配置文件

注意:将以下的JSON文件模板中的配置项替换为正确的信息。

{
    "client":{
        "registrationId":"dataphin",
        "clientId":"dataphin",
        "clientSecret":"XXXXX",
        "clientAuthMethod":"basic",
        "scopes":[
            "read",
            "write",
            "trust"
        ],
        "tokenUri":"https:\/\/*****.*******.com\/oauthserver\/*****\/token",
        "authorizationUri":"https:\/\/*****.*******.com\/oauthserver\/*****\/authorize",
        "userInfoUri":"https:\/\/*****.*******.com\/oauthserver\/me",
        "redirectUriTemplate":"{baseUrl}\/login\/oauth2\/code\/{registrationId}",
        "userNameAttributeName":"username",
        "clientName":"dataphin",
        "logoutUriTemplate":"https:\/\/*****.*******.com\/oauthserver\/logout?username={0}",
        "logoutMethod":"get",
        "logoutParamNames":"email",
        "logoutAuthorizationTemplate":"Bearer {0}",
        "logoutAuthorizationParamNames":"accessToken"
    },
    "user":{
        "idAttributeName":"userid",
        "displayNameAttributeName":"username",
        "realNameAttributeName":"realname",
        "emailAttributeName":"email",
        "mobilePhoneAttributeName":"mobilePhone"
    }
}

配置名称

配置说明

配置示例值

registrationId

它是一个字符串,用于区分不同的客户端应用。在 OAuth 2.0 中,registrationId 通常与 clientId 相同,用于标识客户端应用的身份。

dataphin

clientId

客户所注册的clientId。

dataphin

clientSecret

客户所注册的client secret。

your_client_secret

clientAuthMethod

客户所注册的应用验证方式。

basic

scopes

客户Idp的授权信息。

read,write,trust

tokenUri

获取token的地址。

https://*****.*****.com/oauthserver/*****/token

authorizationUri

认证地址。

https://*****.*****.com/oauthserver/*****/authorize

userInfoUri

获取用户信息的地址。

https://*****.*****.com/oauthserver/me

jwkSetUri

获取公钥的地址。

  • 若是OAuth2.0协议,非必填。

  • 若是OIDC协议,则必填。

https://*****.*****.com/49d65996-*****-4f8d-920f-*****/discovery/v2.0/keys

redirectUriTemplate

dataphin的回调地址,不能修改。

{baseUrl}/login/oauth2/code/{registrationId}

userNameAttributeName

Idp返回的用户信息中“用户名”所对应的属性名。

username

idAttributeName

idp返回的用户信息中id字段的字段名,该名称在Dataphin中将用于唯一标识用户。

userid

clientName

该client的名称,建议和registerId保持一致。

dataphin

logoutUriTemplate

退出登录的URL,支持加query参数。

https://*****.*****.com/*****/logout?username={0}

logoutMethod

退出登录的方法,支持get和redirect。

get

logoutParamNames

退出登录时所携带的参数名,用于填充logoutUriTemplate中的占位符。

email

logoutAuthorizationTemplate

退出登录时所携带的认证信息。

Bearer {0}

logoutAuthorizationParamNames

与logoutParamNames一样,支持变量替换。

accessToken

displayNameAttributeName

idp返回的用户信息中用户显示名称字段的字段名。

username

realNameAttributeName

idp返回的用户信息中用户真实姓名字段的字段名。

realname

emailAttributeName

idp返回的用户信息中用户邮箱字段的字段名。

email

mobilePhoneAttributeName

idp返回的用户信息中用户手机号字段的字段名。

mobilePhone

对JSON格式的配置信息进行Base64编码

将以上JSON格式的配置信息放至文本文件中,以.json格式保存。

  • 若您使用的是Mac操作系统,则用以下方式进行Base64编码。

    1. 打开终端应用程序。

    2. 输入以下命令进行Base64编码:

      cat OAuth_config.json | base64

  • 若您使用的是Windows操作系统,您可以使用PowerShell或命令提示符中的certutil命令进行Base64编码。

    • PowerShell中执行Base64编码的示例:

      [Convert]::ToBase64String([System.IO.File]::ReadAllBytes("OAuth_config.json")) > encodedOAuth_config.txt

    • 在命令提示符中,您可以使用以下命令进行Base64编码:

      certutil -encode OAuth_config.json encodedOAuth_config.txt

Datpahin配置认证信息

您需提供以下配置信息给Datpahin运维人员。

dataphin.sso.provider.session=com.alibaba.dataphin.sso.provider.thirdpart.oauth.session.DataphinOauth2SessionProvider
dataphin.sso.provider.account=com.alibaba.dataphin.sso.provider.thirdpart.oauth.account.DataphinOauth2AccountProvider
dataphin.security.thirdpartoauth2.encodedProperties = 'Base64编码的OAuth2 json配置项的文件内容'

历史用户切换认证系统

  • Dataphin userTable中存储了用户的源id(以下称source_user_id)和Dataphin user_id(以下称user_id)。在Dataphin业务执行中,将使用user_id作为用户标识,source_user_id用于用户信息转换。

  • 当用户在idp登录后,携带source_user_id到Dataphin,Dataphin通过userTable将source_user_id转换为user_id,用户转换完成。

因此在历史用户升级时,需要做source_user_id的订正,以方便新系统的用户可以直接映射成Dataphin中相应的成员。

例如:客户从阿里云的登录系统,切换到微软的AD,此时Dataphin的超管为小明,则需要将小明这个用户在阿里云中的id,替换为其在微软AD中的id。

  • 在信息映射表中,至少应包含两个列:fromId、toId。fromId表示之前idp中的id,toId表示新idp中的id。

  • 未进行订正的用户将无法再访问Dataphin,若其为某些权限的所有人(比如某些权限的审批人),则有可能影响业务。所以在用户订正时,需要客户仔细核实所提供表格,避免订正遗漏或错误

    用户名

    fromId

    toId

    小明

    aliyun123

    ms_ad_124

    SuperAdmin

    aliyun666

    ms_ad_666

  • 本页导读 (0)
文档反馈