首页 > 解决方案 > AWS Loadbalancer 和 Azure OIDC:如何从原始 ID-Token 中检索角色

问题描述

在 AWS ELB 使用 Azure AD over OIDC 完成身份验证后,如何从用户那里检索角色?

所以我的设置目前如下:用户和角色在 Azure AD 中配置。该网页托管在 AWS 中,位于 Elastic Load Balancer 后面,其安全规则使用 OIDC/OAuth2 授权代码流针对前面提到的 Azure AD 对用户进行身份验证。根据https://docs.aws.amazon.com/elasticloadbalancing/latest/application/listener-authenticate-users.html#user-claims-encoding,AWS ELB 将身份验证信息和用户声明放在标头 x-amzn -oidc-accesstoken、x-amzn-oidc-identity 和 x-amzn-oidc-data。但是,我没有找到我在 Azure AD 中配置的角色以及 ID 令牌中存在的角色。

在 Azure AD 颁发的 ID 令牌中,它们以下列方式存在:

{
  "aud": "12345...",
  "iss": "https://login.microsoftonline.com/XXXXX/v2.0",
  "iat": 1621417432,
  ...
  "email": "fu.bar@mail.com",
  "roles": [
    "role1", "role2"
  ]
  ...
}

我希望它们包含在其中的 x-amzn-oidc-data 令牌如下所示:

{
  "sub": "abc123",
  "name": "Fu Bar",
  "family_name": "Bar",
  "given_name": "Fu",
  "picture": "https://graph.microsoft.com/v1.0/me/photo/$value",
  "email": "fu.bar@mail.com",
  "exp": 1621322885,
  "iss": "https://login.microsoftonline.com/XXXXXX/v2.0"
}

有没有办法获取原始 ID 令牌或以其他方式提取角色?还是我需要手动连接到 Microsoft graph 并再次从那里检索角色?

标签: amazon-web-servicesazure-active-directoryamazon-elb

解决方案


推荐阅读