基于"OIDC协议身份提供者"的联合认证
OIDC(Open Id Connect) 是一个开放的认证协议,允许用户使用一组凭证登录多个应用程序。
如果您已经使用自己的 OIDC 身份提供者(IdP)开发了应用程序,可以将此 IdP 与“SiX统一认证/授权”身份应用程序提供的 IdP 进行联合认证。通过启用联合认证,用户可以使用现有的 OIDC IdP 凭证登录您的新应用程序,而授权则通过“SiX统一认证/授权”控制台中的 IAM 系统进行集中管理。
提示
联合后, 您的IdP用户将可以额外获得MFA, 个人身份数据分享管控等功能, 更多: 数据安全 & 隐私概览
提示
联合认证指的是认证委托。当“SiX统一认证/授权”租户中的身份提供者(IdP)接收到认证请求后,它将请求委托给现有的 OIDC IdP。
将IdP与OIDC IdP联合的步骤
1. 创建“SiX统一认证/授权”身份应用(IdP)租户
在“SiX统一认证/授权”控制台中,进入"认证管理 -> 创建身份应用",新建一个身份应用(IdP)租户,并将"认证源定义:"设置为"OIDC认证源(身份提供者)"。
2. 配置联合身份提供商的OIDC/OAuth2客户端参数
设置联合身份提供商的OIDC/OAuth2客户端参数,包括:"授权客户端ID", "授权客户端密钥"等
当前仅支持解析格式为JWT的ID Token和Access Token!
请确保将“发起联合”的IDP的“授权码回调地址”正确的设置给“被联合的OIDC IDP”, 地址为: “https://{appDomain}/oidc/sso/callback”!
3. 创建OAuth2授权客户端租户并关联至IdP租户
在“SiX统一认证/授权”控制台中创建"OAuth2授权客户端"租户,并将其与"身份应用(IdP)租户"关联。
4. 在您的应用中集成OIDC/OAuth2授权客户端
将OAuth2授权客户端的配置信息(如 "授权客户端ID", "授权客户端密钥")集成到您的应用程序中,以启用认证流程。
当用户触发认证时,“SiX统一认证/授权”会自动处理联合认证流程。
5. 获取联合用户身份信息并与本地用户体系关联
您的应用可以通过解析JWT令牌获取 openId
及联合OIDC提供商的用户标识, 或者调用/userinfo接口获取信息, 最终,您可以将这些信息与"本地用户ID"进行关联,实现身份管理。
提示
以下是一个访问Token的示例, 请注意高亮的“openId字段”和联合的“OIDC提供商的参数(包括OIDC提供商中的用户ID信息)”!
{
"sub": "abceft@six-inno.cn",
"role": [
{
"ROLE_iam-iot-product-key": [
"iam_config_read",
"iam_key_create",
"iam_keys_read",
"iam_key_update"
]
},
{
"ROLE_iam-iot-app-edit": [
"iam_app_update",
"iam_app_create",
"iam_app__client__link_remove"
]
},
{
"ROLE_iam-iot-product-edit": [
"iam_iot__product__props_create",
"iam_iot__product_update",
"iam_iot__product__topic_delete",
"iam_iot__product__topic_create",
"iam_iot__product_delete",
"iam_iot__product_create"
]
},
{
"ROLE_iam-iot-device": [
"iam_iot__device__mqttmsgs_read",
"iam_iot__analysis_deviceMsg",
"iam_iot__device__statuses_read",
"iam_iot__device__info_bindings",
"iam_iot__device__info_acls",
"iam_iot__device_bind",
"iam_iot__analysis_activeDevice"
]
},
{
"ROLE_iam-iot-product-read": [
"iam_iot__product_read",
"iam_iot__products_read"
]
},
{
"ROLE_iam-iot-app-read": [
"iam_app__clients_read",
"iam_app_read",
"iam_app__users_read",
"iam_apps_read"
]
},
{
"ROLE_iam-iot-client-read": [
"iam_clients_read"
]
},
{
"ROLE_iam-device": [
"iam_device_read",
"iam_devices_read",
"iam_device_registration",
"iam_device__guid_read",
"iam_device_provision"
]
},
{
"ROLE_iam-iot-config-read": [
"iam_iot__config_read"
]
},
{
"ROLE_iam-iot-client-edit": [
"iam_client__app_create",
"iam_client_create",
"iam_client_update"
]
}
],
"org": {
"level": 1,
"orgId": "c0a81f4c-91a8-1e4f-8191-a82e66b50000"
},
"openId": "ac1e2001-976d-15de-8197-6d181c780001",
"iss": "http://127.0.0.1:9001",
"aud": "iot_sample_client",
"nbf": 1749957697,
"federate": [
{
"name": "oidcAuthn",
"value": "{\"access_token\":\"eyJraWQiOiJiYmQ4ZDg0NS0yZTY0LTQxYzQtYTk4NC03Mjg0OWY2OTI1NzIiLCJhbGciOiJSUzI1NiJ9.eyJzdWIiOiJzZXJ2aWNlQHNpeC1pbm5vLmNuIiwiYXVkIjoiaW90X3NhbXBsZV9jbGllbnQiLCJuYmYiOjE3NDk5NTc2OTIsInJvbGUiOltdLCJvcmciOnsibGV2ZWwiOjAsIm9yZ0lkIjoiMGEyYTAwOTMtOGJmNi0xZGRhLTgxOGItZjY0ZTAyMDgwMDAwIn0sIm9wZW5JZCI6IjBhMmEwMGIxLTk2MzQtMTM4MS04MTk2LTM0NWM4NmExMDAwZCIsInNjb3BlIjpbIm9wZW5pZCJdLCJpc3MiOiJodHRwczovLzA4ZDdkYi5hcHAuc2h1aGVuZ2xpYW5jaGFuZy5jb20iLCJleHAiOjE3NDk5NzU2OTIsImlhdCI6MTc0OTk1NzY5MiwianRpIjoiNzEwMDg1NDQtNGRiYS00YTBkLTk3M2ItNjIzMTk1YTExMzE4In0.p10AbEsp5PZyeewQHa2q73rGEt9pr_Z553tzp3ofKQ7aCYGYcR4PU4uleEikKwrNkPWvvPkJf9CDEGHHcv0jrIDVb2LdU6W8AloxP_FEgJZyS1KaxrXAGUs7h1Dj2OhPafW5hc3xy7e8QiMG1NmPXCVTB_x0hc0HmsNc2LDxpjrsyNc1FHnXIDh4IrkowGgJSG-XpPca3n3C11iiS3j6KgEue0No1Ozbh-OYYNvKAa0_DHAWKEvZBEm80LntutMTAmW6eYPNpappmvgZKFq6Zo0xzn0pEJBPJdQQmH36yRaJsCc9WCKuCcPlltvKltz0IjDWpmZbMAfJDJMZyjctAg\",\"scope\":\"openid\",\"id_token\":\"eyJraWQiOiJiYmQ4ZDg0NS0yZTY0LTQxYzQtYTk4NC03Mjg0OWY2OTI1NzIiLCJhbGciOiJSUzI1NiJ9.eyJzdWIiOiJzZXJ2aWNlQHNpeC1pbm5vLmNuIiwiYXVkIjoiaW90X3NhbXBsZV9jbGllbnQiLCJhenAiOiJpb3Rfc2FtcGxlX2NsaWVudCIsImF1dGhfdGltZSI6MTc0OTk1NzY5MSwiaXNzIjoiaHR0cHM6Ly8wOGQ3ZGIuYXBwLnNodWhlbmdsaWFuY2hhbmcuY29tIiwiZXhwIjoxNzQ5OTU5NDkyLCJpYXQiOjE3NDk5NTc2OTIsImp0aSI6ImU2YTQxNWQyLWI5ZmMtNDViZi05MzIwLTlkMjlhYjBmOTFlNiIsInNpZCI6InZkRGY2WWhtOWJTWHdZcVFqdjVwQXBjcHQ3OTFrM1JrcTkxZGFBZEs2V0UifQ.iYcI2BjwQo8msWgNxlghwQS3L8QG0kGvZHVXHeSEjgBRimeYEiT0AWXUxvr_xQNZ3FUD03a1taY_X1vTCiEauaN68pur2cpSRRNxJj1RKPMlMgmKd1xwv5bjiJNdigtsbl9MxCm6U9DqYvQgMMfSV61OJWD_aYagpMAQxAV8qmtInul7wtVyxbYWBpPJYmrsJCM-oYvdAN-6qzL6V8t5VxFTAHiWBQkze6YCoWkmXSi23ssINkg6HIpWFFgsolXtnYnfeQQWMbFo9rTlFaNGtnJqPqdyj5TfaF7tLL5pAZe3l42cXpID2ioKyoU6GTHYC6mGEoclXKbmSfBWojm9tQ\",\"token_type\":\"Bearer\",\"expires_in\":17999}"
},
{
"name": "sourceUserId",
"value": "0a2a00b1-9634-1381-8196-345c86a1000d"
}
],
"scope": [
"openid",
"profile"
],
"property": [
{
"name": "aa",
"value": "bb"
}
],
"exp": 1749957997,
"iat": 1749957697,
"jti": "008eed5f-426f-40e9-b0c6-124da1a05e4b"
}