2

当您在浏览器中通过 SSO 登录时,如果您打开一个帐户然后担任角色,则单击“管理控制台”后会打开一个新选项卡。该链接的 url 语法类似于https://my-sso-portal.awsapps.com/start/#/saml/custom/my-account-name/base-64-string

如果您对 url 中的 base 64 字符串进行解码,您会注意到有 3 个数字,具有以下结构:number1 _ins- number2 _p- number3第一个数字是您的 AWS 组织编号,第二个数字标识帐户,第三个数字假定的角色。

即使我弄清楚了这个字符串的结构,我仍然不知道用户是否可以获得第二个和第三个数字(当然,不使用 url)。我基本上想以编程方式构造该 url,但看起来这两个数字是 AWS 为自己保留的 ID,不过我不确定。还有其他人对此了解更多吗?

4

1 回答 1

0

您可以使用 AWS SSO API 来获取此信息。我还没有找到它们的文档,但是 SSO 用户门户使用它们。

第一个(组织 ID)可以使用GET https://portal.sso.<SSO_REGION>.amazonaws.com/token/whoAmI. 在响应中搜索“accountId”属性。

第二个(应用实例 ID)可以使用GET https://portal.sso.<SSO_REGION>.amazonaws.com/instance/appinstances. 响应包含一个实例列表,每个实例都包含一个“id”属性。

最后一个(配置文件 ID)可以使用GET https://portal.sso.<SSO_REGION>.amazonaws.com/instance/appinstance/<APP_INSTANCE_ID>/profiles. 响应包含一个配置文件列表,每个配置文件都有 id 属性。

对于这些 API 中的每一个,您都需要可通过 CLI/SDK 检索的 SSO 令牌。UI 将令牌插入到两个标头中:“x-amz-sso-bearer-token”和“x-amz-sso_bearer_token”。

于 2021-11-21T11:48:35.793 回答