【问题标题】:How add custom claim to Azure AD access token (JWT) at token request time?如何在令牌请求时向 Azure AD 访问令牌 (JWT) 添加自定义声明?
【发布时间】:2019-06-24 08:22:49
【问题描述】:

来自 Azure AD 的当前 JWT 具有以下结构:

AzureAD JWT:

{
  "aud": "a5aa555a-aa55-5aaa-5a55-555a5aa55a5a",
  "iss": "https://sts.windows.net/a5aa555a-aa55-5aaa-5a55-555a5aa55a5a/",
  "iat": 1547084136,
  "nbf": 1547084136,
  "exp": 1547089036,
  "acr": "1",
  "aio": "aaaaaaaaaaaaa==",
  "appid": "a5aa555a-aa55-5aaa-5a55-555a5aa55a5a",
  "appidacr": "1",
  "email": "bob@bob.com",
  "idp": "https://sts.windows.net/a5aa555a-aa55-5aaa-5a55-555a5aa55a5a/",
  "ipaddr": "192.168.1.1",
  "name": "Bob Bob",
  "oid": "a5aa555a-aa55-5aaa-5a55-555a5aa55a5a",
  "roles": [],
  "scp": "Directory.AccessAsUser.All User.Read",
  "sub": "a5aa555a-aa55-5aaa-5a55-555a5aa55a5a",
  "tid": "a5aa555a-aa55-5aaa-5a55-555a5aa55a5a",
  "unique_name": "bob@bob.com",
  "uti": "kjkugiugi",
  "ver": "1.0"
}

我想添加一些额外的声明,例如departmentIdsomeOtherCustomInfo。我想在我的令牌请求中这样做,没有这个预设。我该怎么做?

目前,我使用 ADAL4J 来获取令牌:

//Represents the authority we are asking to provide tokens
AuthenticationContext context = new AuthenticationContext(
    authority,
    true,
    Executors.newFixedThreadPool( numInPool )
);

Future<AuthenticationResult> future = context
    .acquireTokenByAuthorizationCode(
        authCode,
        new URI( redirectUri ),
        credentials,
        resource,
        null
    );

AuthenticationResult authResult = future.get();

//The token
String token = authResult.getAccessToken();

【问题讨论】:

  • 我知道这已经过时了,但你有没有找到答案?我正在尝试做同样的事情。我想知道如果您有客户端密码,您是否可以简单地在服务器上生成一个新令牌。查看 ApiManagementGateway,它只是使用客户端密钥来测试签名对于给定的声明是否有效。如果您使用相同的客户端密码和您添加的任何自定义属性签署一个全新的令牌,它是否有效?
  • @TimHardy 没有办法。如果要添加自定义声明,则必须创建自己的令牌。

标签: java azure oauth-2.0 azure-active-directory adal4j


【解决方案1】:

Azure AD 发出的 JWT 令牌(无论是访问令牌还是 id 令牌)除了电子邮件地址和其他一些字段外,不包含太多有用的信息。

然后,除了 JWT 令牌中存在的默认声明之外,我们还需要更多声明作为 JWT 令牌的一部分。

我们可以使用自定义声明映射功能。有关更多信息,请访问以下链接

How to: Customize claims emitted in tokens for a specific app in a tenant

【讨论】:

  • 有关更谨慎的示例,请通过 - devonblog.com/cloud/…
  • 这些不会在令牌请求时添加声明。这些都是事先计算好的
猜你喜欢
  • 2021-12-01
  • 2020-07-05
  • 2020-01-15
  • 2022-10-07
  • 2020-01-16
  • 2018-12-31
  • 2019-11-20
  • 2021-11-14
  • 1970-01-01
相关资源
最近更新 更多