【发布时间】: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"
}
我想添加一些额外的声明,例如departmentId、someOtherCustomInfo。我想在我的令牌请求中这样做,没有这个预设。我该怎么做?
目前,我使用 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