全部产品
Search
文档中心

应用身份服务:无AK访问配置流程(结合阿里云RAM)

更新时间:Jun 09, 2026

本文将结合阿里云RAM访问控制,向您演示如何配置M2M应用的无AK访问方式,并获取STS Token的流程。

前提条件

创建OIDC身份提供商

  1. 使用RAM管理员登录RAM控制台

  2. 在左侧导航栏,选择集成管理 > SSO 管理

  3. 角色 SSO页签,先单击OIDC页签,然后单击创建身份提供商

  4. 创建身份提供商页面,设置身份提供商信息。

    参数

    说明

    身份提供商名称

    同一个阿里云账号下必须唯一,与 IDaaS 无关,按照 RAM 规则录入。

    颁发者 URL

    • 颁发者 URL(Issuer URL)是外部身份提供商(IdP)为M2M应用分配的唯一标识,用于OAuth 2.0等协议中校验令牌来源。

    • 阿里云IDaaS会基于此URL验证外部IdP颁发的令牌的有效性,其配置位于IDaaS M2M应用(Client端)的 Issuer 字段中。

    验证指纹

    • 填写完颁发者 URL后,您可以单击获取指纹,阿里云会辅助您自动计算出验证指纹,但是建议您在本地自己计算一次(例如:通过OpenSSL获取OIDC IdP的指纹),与阿里云计算的指纹进行对比。

    • 如果对比发现不同,则说明该颁发者URL可能已经受到攻击,请您务必再次确认,并填写正确的指纹,RAM 会根据录入的 Issuer 地址访问获取指纹。

    说明

    当您的IdP计划进行证书轮转时,请在轮转前生成新证书的指纹并添加到阿里云OIDC身份提供商信息中,一段时间(至少一天)以后再进行证书轮转,证书轮转确认可以换取到STS Token后再删除旧的指纹。

    客户端ID

    • 客户端ID(Client ID)是您的应用在外部身份提供商(IdP)注册时生成的唯一标识。当外部IdP签发OIDC令牌(OIDC Token)时,需使用该客户端ID,且令牌的aud字段会携带此ID。在阿里云OIDC身份提供商中配置此客户端ID后,系统会在使用OIDC Token换取STS Token时校验aud字段的客户端ID是否匹配,确保安全扮演角色。

    • 单个OIDC身份提供商最多支持配置50个客户端ID,适用于多应用访问阿里云的场景。

    • 在M2M(Machine-to-Machine)应用场景中,客户端ID对应 IDaaS M2M 应用中配置的受众标识,用于服务端间认证。

    最早颁发时间限制

    在该限制时间之前颁发的OIDC Token不允许换取STS Token。默认值:12小时。取值范围:1~168小时。

    备注

    身份提供商的描述信息。

  5. 单击创建身份提供商

创建OIDC身份提供商角色

  1. 前往阿里云RAM访问控制控制台,选择角色 > 创建角色 > 身份提供者 > 切换编辑器

  2. 在编辑器页面,按照以下步骤,开始添加身份提供者

    单击可视化编辑页签,在主体类型中选择身份提供者,然后单击添加按钮添加身份提供者。

  3. 添加主体弹出框中,选择上文中已经创建好的身份提供者,点击确定完成添加。

    身份提供者类型选择为OIDC

  4. 身份提供者添加完成后,会默认生成iss和aud条件,您可以选择编辑或删除这两个条件,也可以继续添加新的条件。

    默认生成的两个条件键分别为 oidc:issoidc:aud,运算符均为 StringEquals

  5. 下文以添加sub条件表达式为例,向您演示如何添加条件,您可按实际需要选择是否添加。编辑完成后,点击确定,即可完成添加。

    说明
    • 条件值:您需要填入已经创建好的M2M应用Server端的 client_id。如何添加M2M应用及查看受众标识等信息,请参考:M2M应用(机器间权限管理)

    • 如果您需要了解更多条件表达式的信息,请参考:权限策略基本元素

    • 当前RAM OIDC中仅支持三种条件:oidc:issoidc:audoidc:sub

    运算符下拉框中选择 StringEquals

  6. 单击底部的确定,在创建角色弹出框中,填入您要创建的角色名称,单击确定,即可完成角色创建。

角色授权

您可以根据需要,向已创建的角色新增授权

在角色的权限管理页签下单击新增授权,资源范围选择账号级别,在权限策略搜索框中输入 idaas 进行筛选,勾选系统策略 AliyunYundunIdaasReadOnlyAccess,然后单击确认新增授权

获取M2M Token

通过curl命令方式获取

  • 请将以下占位参数替换为您的应用配置后,执行curl命令,获取Token。

    # 请将<app_issuer_endpoint>、<YOUR_APP_CLIENT_ID>、<YOUR_APP_CLIENT_SECRET>和<YOUR_SERVER_AUD_IDENTIFIER>替换为您M2M应用的具体配置值。
    #
    # <YOUR_SERVER_ISSUER_ENDPOINT>:Issuer,“Resources Server应用 > 通用配置 > Issuer“中查看Endpoint并替换。
    # <YOUR_APP_CLIENT_ID>:客户端ID,在“Client应用 > 通用配置 > 凭证管理“中查看client_id并替换。
    # <YOUR_APP_CLIENT_SECRET>:客户端Secret,在“Client应用 > 通用配置 > 凭证管理“中查看client_secret并替换。
    # <YOUR_SERVER_AUD_IDENTIFIER>:服务端受众标识,在“Resources Server应用 > 服务端权限开放 > 权限应用 > 受众标识“中,查找受众标识并替换。
    #
    curl --location --request POST 'https://<YOUR_SERVER_ISSUER_ENDPOINT>.aliyunidaas.com/api/v2/iauths_system/oauth2/token' \
         --header 'Content-Type: application/x-www-form-urlencoded' \
         --data-urlencode 'client_id=<YOUR_APP_CLIENT_ID>' \
         --data-urlencode 'client_secret=<YOUR_APP_CLIENT_SECRET>' \
         --data-urlencode 'grant_type=client_credentials' \
         #.all 是阿里云 IDaaS 平台中的一个预定义范围标识符,表示 请求该受众(Audience)下的所有可用权限。
         --data-urlencode 'scope=<YOUR_SERVER_AUD_IDENTIFIER>|.all'
  • Token获取成功时结果如下。

    xxx ~ % curl --location --request POST 'https://xxx.aliyunidaas.com/api/v2/iauths_system/oauth2/token' \
        --header 'Content-Type: application/x-www-form-urlencoded' \
        --data-urlencode 'client_id=app_xxx4y54' \
        --data-urlencode 'client_secret=CSHoxxx5ZQ6' \
        --data-urlencode 'grant_type=client_credentials' \
        --data-urlencode 'scope=xxx.all'
    {
        "token_type": "Bearer",
        "access_token": "eyJrxxxi5rg",
        "expires_in": 3600,
        "expires_at": 1741336113
    }

通过Postman工具获取

  • 请将各参数替换为您的应用配置参数后,通过Postman发起请求获取token。

    请求地址为 POST https://<IDaaS实例域名>.aliyunidaas.com/api/v2/iauths_system/oauth2/token,Body 选择 x-www-form-urlencoded 编码方式,包含参数 client_idclient_secretgrant_type(值为 client_credentials)和 scope。请求成功后(200 OK),返回的 JSON 响应体格式:

    {
      "token_type": "Bearer",
      "access_token": "eyJrxxx...xxxDiCw",
      "expires_in": 3600,
      "expires_at": 1741331524
    }

    其中 access_token 即为获取到的 Bearer 类型访问令牌,有效期为 3600 秒。

通过M2M Token获取RAM角色的临时身份凭证(STS Token)

说明

如果您暂时不了解阿里云STS,请先前往了解什么是STS

OpenAPI方式获取

  • 前往OpenAPI门户,找到AssumeRoleWithOIDC接口。

    说明

    本文仅演示获取,更多关于AssumeRoleWithOIDC接口的详细信息,请参见:AssumeRoleWithOIDC - OIDC角色SSO时获取扮演角色的临时身份凭证

  • 填写接口所需的必要参数,确认无误后点击发起调用,即可获取到STS Token。

    重要
    • OIDCProviderArn:请前往您已创建的OIDC身份服务提供商角色的基本信息中,从信任策略中获取。

    • RoleArn:请前往您已创建的OIDC身份服务提供商角色的基本信息中,找到ARN并获取。

    • OIDCToken:填入您上文中已获取成功的M2M Token。

    • RoleSessionName:无特殊要求,用户自定义字段,仅作为角色标识。

相关文档