2013-10-10 57 views
13

Хотя я уже работал с OAuth 2, я новичок в Open ID Connect.OAuth 2 access_token vs OpenId Connect id_token

Чтение учебников и документации я наткнулся как access_token и id_token где access_token является случайная уникальная строка, создаваемая в соответствии с OAuth 2 и id_token является JSON веб-Токен, который содержит информацию, как идентификатор пользователя, алгоритма, эмитента и другой информации, которая может быть использована для его проверки. Я также видел поставщиков API, которые предоставляют как access_token, так и id_token, и насколько я знаю, это для обратной совместимости.

Мой вопрос в том, что можно использовать как access_token, так и id_token для доступа к защищенным ресурсам? Или id_token только для целей проверки, а access_token используется для доступа к защищенным ресурсам?

ответ

24

Первоначально OAuth и OpenId предназначены для разных целей: OpenId для аутентификации и OAuth для авторизации. OpenId Connect является объединением двух и служит для обоих, но не изменяет их исходные функции. Помня об этом, вы должны быть в состоянии узнать себя. ;-)

ID_token используется для идентификации аутентифицированного пользователя, например. для SSO. Access_token должен использоваться для подтверждения прав доступа к защищенным ресурсам, например. для конечной точки userinfo в OpenId Connect.

+0

Я немного путаюсь с этим открытым подключением id и oauth2. У меня есть передний конец (html, angularjs) и задний конец webservice.Now я хочу реализовать механизм на основе токенов во время входа в систему, поэтому с логином пользователь отправит clientid , адрес электронной почты, пароль и в бэкэнд, я буду проверять идентификационные данные другого идентификатора клиента, после чего я выдам токен пользователю, и с помощью этого пользователя токена будет поддерживать этот пользовательский сеанс. Так где же происходит соединение openid и как оно будет полезно? для меня. Можете ли вы дать мне некоторое представление, поскольку я действительно запутался здесь, пожалуйста, –

+0

Насколько я понимаю, вам не нужна авторизация, а только аутентификация. Если это так, вы должны просто использовать OpenId или решение SSO, но вам вообще не нужны OAuth или OpenId Connect. –

1

access_token полезен для вызова определенных API в Auth0 (например,/userinfo) или API, который вы определяете в Auth0.

id_token является JWT и представляет собой зарегистрированный пользователь. Он часто используется вашим приложением.

Можно ли использовать как access_token, так и id_token для доступа к защищенным ресурсам?

Нет полностью, во-первых, вам нужно использовать id_token войти в систему,
во-вторых, вы получите маркер доступа,
наконец, использовать маркер доступа для доступа к данным.

Смежные вопросы