Skip to content

基于"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", "授权客户端密钥"等

OIDC 认证来源示意图

当前仅支持解析格式为JWT的ID Token和Access Token!

请确保将“发起联合”的IDP的“授权码回调地址”正确的设置给“被联合的OIDC IDP”, 地址为: “https://{appDomain}/oidc/sso/callback”!

3. 创建OAuth2授权客户端租户并关联至IdP租户

在“SiX统一认证/授权”控制台中创建"OAuth2授权客户端"租户,并将其与"身份应用(IdP)租户"关联。

为 SPA 应用创建 IdP

4. 在您的应用中集成OIDC/OAuth2授权客户端

将OAuth2授权客户端的配置信息(如 "授权客户端ID", "授权客户端密钥")集成到您的应用程序中,以启用认证流程。

当用户触发认证时,“SiX统一认证/授权”会自动处理联合认证流程。

5. 获取联合用户身份信息并与本地用户体系关联

您的应用可以通过解析JWT令牌获取 openId 及联合OIDC提供商的用户标识, 或者调用/userinfo接口获取信息, 最终,您可以将这些信息与"本地用户ID"进行关联,实现身份管理。

提示

以下是一个访问Token的示例, 请注意高亮的“openId字段”和联合的“OIDC提供商的参数(包括OIDC提供商中的用户ID信息)”!

json
{
  "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"
}

领先的解决方案提供商