Есть ли стандартная схема HTTP-аутентификации, которая подходит для использования с OpenID Connect? Сценарий, который я имею в виду, выглядит следующим образом:Заголовок HTTP-аутентификации для кодов авторизации OpenID
HTTP-служба требует аутентификации пользователей. Одним из возможных методов проверки подлинности является использование федеративной идентификации стороннего поставщика OpenID. Служба зарегистрирована сторонним провайдером OpenID в качестве конфиденциального клиента и обладает клиентским и клиентским ключами.
Когда пользователь пытается получить доступ к HTTP Service, сервер отвечает с 401 Unauthorized
и WWW-Authenticate
заголовка, содержащего информацию о том, как инициировать запрос аутентификации с использованием OpenID Provider:
WWW-Authenticate: OpenIDConnect realm="MyService", client_id="1234-5678", authorization_url="https://provider/authorize"
клиент обращается к авторизации конечная точка, аутентифицируется, а затем получает код авторизации. Код затем указываются в последующем запросе к службе через заголовок Authorization
, например:
GET/HTTP/1.1
Authorization: OpenIDConnect client_id="1234-5678", code="AAABAAA..."
Служба будет использовать код для получения идентификатора токена от провайдера OpenID и установить авторизованную сессию с клиентом, например установив файл cookie или вернув новый набор учетных данных для использования для последующих запросов.
Схема OpenIDConnect
- это то, что я составил для этого примера. Я попытался найти стандартный способ сделать что-то подобное, и отсутствие результатов оставило меня со следующими возможными ответами:
- Я не искал достаточно трудно.
- То, что я пытаюсь сделать, ошибочно и неправильно.
- Каждый реализует свои собственные схемы пользовательских аутентификации для этой цели
Спасибо. Поскольку OpenID Connect основан на OAuth 2.0, я полагаю, что схема OAuth 1.0 будет неприемлема для использования в моих целях. Я думаю, что «Bearer» не подходит по двум причинам: (1) для токенов доступа OAuth 2.0, в то время как мне нужно в конце - id_token (как вы указали, меня интересует проверка подлинности, а не авторизация); и (2) мне нужно отправить код авторизации, а не токен. Я действительно ищу схему, которая может быть использована для передачи кода авторизации от User Agent к конфиденциальному клиенту, как описано в спецификации OIDC Core. –
Но так или иначе, поскольку в реестре, к которому вы привязаны, не содержится ничего подходящего для моего конкретного случая использования, я думаю, что ответ заключается в том, что стандартная схема не определена. –
@UlrikRasmussen Возможно [это руководство] (http://openid.net/specs/openid-connect-basic-1_0.html) поможет вам?(Примечание [эта часть] (http://openid.net/specs/openid-connect-basic-1_0.html#TokenRequest)) Но вы правы: для OpenID Connect нет специальной схемы, специально зарезервированной для OpenID Connect. – DaSourcerer