Текущий JWT из Azure AD имеет следующую структуру:
JWT AzureAD:
{
"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": "[email protected]",
"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": "[email protected]",
"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();
@TimHardy Это невозможно сделать. Вам нужно создать свой собственный токен, если вы хотите добавить пользовательские утверждения.




Токен JWT, выдаваемый Azure AD (независимо от того, является ли он токеном доступа или токеном идентификатора), не содержит много полезной информации, кроме адреса электронной почты и некоторых других полей.
Затем нам нужно больше утверждений как части токена JWT, кроме утверждений по умолчанию, которые присутствуют в токенах JWT.
Мы можем использовать функцию сопоставления пользовательских претензий для того же. Для получения дополнительной информации перейдите по ссылке ниже.
Для более осторожного примера пройдите - devonblog.com/cloud/…
Они не добавляют утверждения во время запроса токена. Они рассчитываются заранее
Я знаю, что это старо, но вы когда-нибудь находили ответ на это? Я пытаюсь сделать то же самое. Мне интересно, можете ли вы просто сгенерировать новый токен на сервере, если у вас есть секрет клиента. Глядя на ApiManagementGateway, он просто использует секрет клиента, чтобы проверить, действительна ли подпись для данных утверждений. Если вы подпишете новый токен с тем же секретом клиента и любыми пользовательскими свойствами, которые вы добавите, будет ли он действительным?