Можно ли включать области oauth в jwt?

Я добавляю конечную точку сервера авторизации OAuth в свое существующее приложение. Я планирую выпустить JWT из конечной точки токена OAuth.

Когда токен выпущен для определенных областей действия OAuth, кажется, что лучше встроить области, для которых выпущен токен, внутри самого токена, потому что легче проверить, имеет ли токен доступ для выполнения определенного действия, посмотрев на токен, когда клиент использует выпущенный токен позже для выполнения некоторого действия.

Но стандартные поля заявки JWT, похоже, не включает подходящее поле для отметки областей OAuth.

Итак, можно ли включить области как пользовательские утверждения в JWT? Есть ли другой способ встроить детали области в JWT?

Краткий ответ: да, ничто не мешает вам создавать собственные утверждения, понятные вашим клиентам или серверу.

Spomky-Labs 26.10.2018 14:17

@FlorentMorselli Поскольку OAuth важен для авторизации, я ожидал, что JWT будет иметь некоторую особую поддержку OAuth. Пожалуйста, оставьте свой комментарий в качестве ответа, чтобы я мог его принять.

Lahiru Chandima 27.10.2018 16:01
3
2
4 947
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Спецификация JWT - RFC7519 предоставляет вам возможность вставлять и использовать нестандартные / зарегистрированные утверждения. Это выделено в разделе спецификации 4.3. Имена частных требований.

A producer and consumer of a JWT MAY agree to use Claim Names that are Private Names: names that are not Registered Claim Names (Section 4.1) or Public Claim Names (Section 4.2). Unlike Public Claim Names, Private Claim Names are subject to collision and should be used with caution.

Кроме того, если вам нужны стандартные зарегистрированные претензии, их можно найти здесь - https://www.iana.org/assignments/jwt/jwt.xhtml

В качестве альтернативы, если вам интересно использовать только стандартные утверждения и использовать только их с токеном доступа JWT (я предполагаю, что JWT, на который вы ссылаетесь, является токеном доступа), вы можете определить конечная точка интроспекции токена и поместить значения области в его ответ. Область действия определяется как стандартный параметр ответа на самоанализ

Сейчас есть черновик Профиль веб-токена JSON (JWT) для токенов доступа OAuth 2.0 (и, вероятно, скоро стандартный), который многие уже используют на практике. В разделе 2.2.2 прямо говорится, что:

If an authorization request includes a scope parameter, the corresponding issued JWT access token MUST include a scope claim as defined in section 4.2 of [TokenExchange].

All the individual scopes strings in the scope claim MUST have meaning for the resource indicated in the aud claim.

Таким образом, не только разрешено иметь требование scope, но оно даже необходимо, если оно было в запросе.

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