2017-02-15 30 views
0

Есть ли стандартная схема 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 - это то, что я составил для этого примера. Я попытался найти стандартный способ сделать что-то подобное, и отсутствие результатов оставило меня со следующими возможными ответами:

  1. Я не искал достаточно трудно.
  2. То, что я пытаюсь сделать, ошибочно и неправильно.
  3. Каждый реализует свои собственные схемы пользовательских аутентификации для этой цели

ответ

0

Я думаю, что вы не знаете, где искать в первую очередь. Начиная с RFC 7353, схемы аутентификации в HTTP подчиняются IANA HTTP Authentication Scheme Registry. В указанном реестре вы найдете схему OAuth, которая подлежит RFC 5849, section 3.5.1 и очень похожа на то, что вы ищете. Однако, как говорится, это для OAuth 1.0. OAUth 2.0 обращается к схемам Basic (RFC 6749) и Bearer (RFC 6750).

В целом это касается авторизации (через OAuth). Область OpenID - это аутентификация. Вы можете посмотреть на What's the difference between OpenID and OAuth?

+0

Спасибо. Поскольку OpenID Connect основан на OAuth 2.0, я полагаю, что схема OAuth 1.0 будет неприемлема для использования в моих целях. Я думаю, что «Bearer» не подходит по двум причинам: (1) для токенов доступа OAuth 2.0, в то время как мне нужно в конце - id_token (как вы указали, меня интересует проверка подлинности, а не авторизация); и (2) мне нужно отправить код авторизации, а не токен. Я действительно ищу схему, которая может быть использована для передачи кода авторизации от User Agent к конфиденциальному клиенту, как описано в спецификации OIDC Core. –

+0

Но так или иначе, поскольку в реестре, к которому вы привязаны, не содержится ничего подходящего для моего конкретного случая использования, я думаю, что ответ заключается в том, что стандартная схема не определена. –

+0

@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