В OpenID Connect можно ли передавать токен идентификатора вместо токена доступа на сервер ресурсов для авторизации? - PullRequest
0 голосов
/ 07 сентября 2018

Я рассматриваю использование токена id вместо токена id для авторизации, чтобы серверы ресурсов могли проверять его знак и извлекать из него идентификатор пользователя. Есть ли какой-то недостаток в этом методе, о котором я не знаю?

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

Я использую эту библиотеку для реализации сервера OAuth2 и OpenID. https://github.com/bshaffer/oauth2-server-php

1 Ответ

0 голосов
/ 07 сентября 2018

Использование ID Token предназначено для клиентского приложения. Клиент использует его для аутентификации конечного пользователя. Все это стало возможным благодаря претензиям с ID токена передачи И эти претензии встроены в JWT. Проще говоря, ID Token - это автономный токен.

Теперь обмен ID-токеном вне клиента - это нормально, если вы контролируете все намеченные стороны. Подумайте о сценарии, в котором вы пропускаете конфиденциальную информацию пользователя через идентификатор токена. Например, если идентификационный токен содержит заявление о поле, предназначенное только для использования клиентом. Но когда вы передаете идентификационный токен третьему лицу, вы раскрываете эту конфиденциальную информацию. Это может быть преступлением, если существуют правовые барьеры.

Еще один момент касается проверки токена ID. Таким образом, ID Token ориентирован на клиента, важные требования, такие как aud, устанавливаются соответствующим образом. Когда вы передаете идентификационный токен используемому бэкэнду, такая проверка может завершиться неудачно.

Есть два решения. Во-первых, это использовать автономные токены доступа. В наши дни распространено использование токенов доступа на основе JWT. С ними вы получите то же решение. Он будет содержать идентификатор конечного пользователя, значения области, а также информацию о проверке токена. Azure AD использует такой подход - проверьте эту ссылку .

Второй - использовать идентификационный токен. Учитывая, что вы управляете как передним, так и внутренним интерфейсом, я считаю, что вы можете использовать его. Но помните о будущих расширениях. Специально, чтобы не подвергать это другим сторонам.

...