Okta

更新时间:
复制为 MD 格式

本文为您介绍如何将Okta配置为Agent Identity的身份提供商。

前提条件

  • 拥有一个可以访问Okta管理员门户(Admin Portal)的管理员账号。

  • 建议为阿里云侧的操作人员分配Agent Identity管理员AliyunAgentIdentityFullAccess权限。

步骤一:在Okta侧创建OAuth应用

  1. 登录Okta管理控制台。

  2. 在左侧导航栏,选择Applications > Applications

  3. Applications页面,单击Create App Integration

  4. Create a new app integration对话框,设置登录方式为OIDC - OpenID Connect,应用类型为Web Application,然后单击Next

  5. New Web App Integration页面,配置以下参数:

    1. App integration name:输入应用名称。

    2. Grant type:保持为默认的Authorization Code

    3. Sign-in redirect URIs:用户授权成功后的重定向目标地址。例如:https://your-app-fqdn/authcallback

    4. Assignments下的Controlled access:控制允许访问此应用的用户。在测试场景下,可选择Allow everyone in your organization to access

  6. 其余设置保持默认,单击Save

  7. Applications页面,单击刚创建的应用。在应用详情页,复制并保存Client ID

步骤二:测试获取ID Token(可选)

手动构造OAuth请求以获取ID Token,用于测试OAuth验证流程和调试应用或Agent。

重要

以下内容仅用于测试或调试。生产环境中建议使用支持OAuth的相关SDK请求ID Token。

  1. Okta管理控制台打开步骤一中创建的OAuth应用。在CLIENT SECRETS区域单击Secret右侧的复制按钮,保存Client Secret

  2. 单击General Settings右侧的Edit。在LOGIN区域,为Sign-in redirect URIs添加URI http://localhost:8080,然后单击Save

  3. 复制以下HTTP请求,并将占位符<your-okta-domain-name><your-client-id>替换为实际的Okta域名和步骤一中保存的Client ID

    https://<your-okta-domain-name>/oauth2/v1/authorize?
    client_id=<your-client-id>
    &redirect_uri=http://localhost:8080
    &response_type=code
    &scope=openid
    &state=12345
  4. 在浏览器中访问该请求地址,并根据提示完成Okta用户登录。登录成功后,浏览器将重定向至http://localhost:8080,并在URL中返回授权码code。复制并保存code的值。

    http://localhost:8080/?code=PnBlGlro40HCjBaiCCt4WBCT2FnyIBHf86NIonD****&state=12345
  5. 复制以下命令并执行,将codeclient_idclient_secret分别替换为您在之前步骤中保存的codeClient ID以及Client Secret

    curl -X POST "<your-okta-domain-name>/v1/token" \
         -H "Content-Type: application/x-www-form-urlencoded" \
         -d "code=<your-authorization-code>" \
         -d "client_id=<your-client-id>" \
         -d "redirect_uri=http://localhost:8080" \
         -d "grant_type=authorization_code" \
         -d "client_secret=<your-client-secret>"
  6. 成功执行后,Okta将返回id_tokenaccess_token。返回示例如下:

    {
      "token_type": "Bearer",
      "expires_in": 3600,
      "access_token": "eyJraWQiOiJmeTBnMnB0VVVh...PGX08Q",
      "scope": "openid",
      "id_token": "eyJraWQiOiJmeTBnMnB0VVVhMG1U...VBdhDA"
    }
  7. id_token的值复制到JWT解析网站(例如https://www.jwt.io/)进行解码。解码后的aud字段值应与步骤一中保存的Client ID一致。解码示例如下:

    {
      "sub": "00uyhvyq87xgV4qQ****",
      "ver": 1,
      "iss": "https://****.okta.com",
      "aud": "0oaylbem3eBMiwIz****",
      "iat": 1766475191,
      "exp": 1766478791,
      "jti": "ID.6ywwkKDDGqivVjbwdE16dVygBGa0UEslOwovs0Y****",
      "amr": [
        "mfa",
        "otp",
        "pwd",
        "okta_verify"
      ],
      "idp": "00oy7sk1coYRWkrs****",
      "auth_time": 1766470553,
      "at_hash": "Jf8NvN9QvLV2tRhcl6****"
    }

步骤三:在Agent Identity侧创建身份提供商

  1. 登录AgentIdentity控制台,在左侧导航栏选择入站 > 身份提供商

  2. 身份提供商列表页,单击创建身份提供商

  3. 创建身份提供商页面,配置以下参数:

    • 身份提供商名称:输入自定义的身份提供商名称。

    • 描述(可选)。

    • OIDC元数据地址:输入OktaOIDC元数据地址,格式为https://<your-okta-domain-name>/.well-known/openid-configuration

    • 允许的目标受众:保持选中指定受众白名单,并输入步骤一中创建的OIDC应用的Client ID。如需支持多个目标受众,可输入多个Client ID,并以换行符分隔。

  4. 单击创建身份提供商

步骤四:在Agent Identity中将身份提供商关联到工作负载身份

身份提供商必须要关联到工作负载身份才可以完成入站授权。如果您还没有创建工作负载身份,请参考创建工作负载身份完成创建。

  1. 登录AgentIdentity控制台,在左侧导航栏选择工作负载身份

  2. 工作负载身份列表页,单击目标工作负载身份。

  3. 在工作负载身份详情页的认证流程区域,单击身份提供商下的关联身份提供商

    image

  4. 关联身份提供商选择框中,从下拉列表中选择步骤三创建的身份提供商。

  5. 单击确定