Как добавить пользовательское утверждение в токен доступа Azure AD (JWT) во время запроса токена?

Текущий 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();

Я знаю, что это старо, но вы когда-нибудь находили ответ на это? Я пытаюсь сделать то же самое. Мне интересно, можете ли вы просто сгенерировать новый токен на сервере, если у вас есть секрет клиента. Глядя на ApiManagementGateway, он просто использует секрет клиента, чтобы проверить, действительна ли подпись для данных утверждений. Если вы подпишете новый токен с тем же секретом клиента и любыми пользовательскими свойствами, которые вы добавите, будет ли он действительным?

Tim Hardy 08.02.2020 07:58

@TimHardy Это невозможно сделать. Вам нужно создать свой собственный токен, если вы хотите добавить пользовательские утверждения.

Don Rhummy 10.02.2020 18:54
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
2
3 085
1

Ответы 1

Токен JWT, выдаваемый Azure AD (независимо от того, является ли он токеном доступа или токеном идентификатора), не содержит много полезной информации, кроме адреса электронной почты и некоторых других полей.

Затем нам нужно больше утверждений как части токена JWT, кроме утверждений по умолчанию, которые присутствуют в токенах JWT.

Мы можем использовать функцию сопоставления пользовательских претензий для того же. Для получения дополнительной информации перейдите по ссылке ниже.

Практическое руководство. Настройка утверждений, выдаваемых в токенах для определенного приложения в клиенте.

Для более осторожного примера пройдите - devonblog.com/cloud/…

Mohit Verma 31.01.2019 10:09

Они не добавляют утверждения во время запроса токена. Они рассчитываются заранее

Don Rhummy 31.01.2019 15:42

Другие вопросы по теме