本文将结合阿里云RAM访问控制,向您演示如何配置M2M应用的无AK访问方式,并获取STS Token的流程。
前提条件
已完成M2M应用的相关配置。了解M2M相关应用及配置,请参考:M2M应用(机器间权限管理)。
创建OIDC身份提供商
使用RAM管理员登录RAM控制台。
在左侧导航栏,选择 。
在角色SSO页签,先单击OIDC页签,然后单击创建身份提供商。
在创建身份提供商页面,设置身份提供商信息。
参数
说明
身份提供商名称
同一个阿里云账号下必须唯一,与 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小时。
备注
身份提供商的描述信息。
单击创建身份提供商。
创建OIDC身份提供商角色
前往阿里云RAM访问控制控制台,选择 。
在编辑器页面,按照下图的步骤,开始添加身份提供者。
在添加主体弹出框中,选择上文中已经创建好的身份提供者,点击确定完成添加。
身份提供者添加完成后,会默认生成iss和aud条件,您可以选择编辑或删除这两个条件,也可以继续添加新的条件。
下文以添加
sub
条件表达式为例,向您演示如何添加条件,您可按实际需要选择是否添加。编辑完成后,点击确定,即可完成添加。说明条件值:您需要填入已经创建好的M2M应用Server端的 client_id。如何添加M2M应用及查看受众标识等信息,请参考:M2M应用(机器间权限管理)。
如果您需要了解更多条件表达式的信息,请参考:权限策略基本元素。
当前RAM OIDC中仅支持三种条件:oidc:iss、oidc:aud、oidc:sub。
单击底部的确定,在创建角色弹出框中,填入您要创建的角色名称,单击确定,即可完成角色创建。
角色授权
您可以根据需要,向已创建的角色新增授权。
获取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获取成功时结果如下。
通过Postman工具获取
如下图所示,请将各参数替换为您的应用配置参数后,通过Postman发起请求获取token。
通过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:无特殊要求,用户自定义字段,仅作为角色标识。