IdentityServer поддерживает различные потоки OpenId Connect, которые определены в
Потоки IdentityServer
Итак, что такое: неявный поток, поток учетных данных владельца ресурса, поток кода авторизации, поток учетных данных клиента, < сильная> настраиваемая поток и гибридная поток? Также какие из них являются потоками OAuth, а какие - потоками OpenID Connect?
Спасибо!
Ответы (4)
Я столкнулся с той же проблемой, в настоящее время работа все еще продолжается. когда я закончу документацию, я могу разместить ее здесь. пока: пожалуйста, проверьте черновик:
Дополните документацию IdentityServer разделом № 73 OIDC и OAuth2 Flows
Обновление: потоки OIDC и OAuth2
Из первой ссылки по крайней мереPrivilage: и OAuth 2 Simplified Аарона Паретцки
Потоки решают, как токен ID (т. Е. Код авторизации) и токен доступа (т. Е. "Токен" ) клиенту возвращаются:
Поток кода авторизации: поток OAuth 2.0, в котором
- код авторизации возвращается из конечной точки авторизации
- и все токены (на втором этапе в обмен на код авторизации) возвращаются из конечной точки токена
- Используется для вызовов на основе сервера (API), которые могут сохранять конфиденциальность своего секрета клиента. Позволяет повысить безопасность, пока никто не сможет получить доступ к «секрету клиента».
Неявный поток: поток OAuth 2.0, в котором
- все токены возвращаются непосредственно из конечной точки авторизации
- и ни конечная точка токена, ни код авторизации не используются.
- Используется для мобильных и веб-приложений, которые не могут поддерживать конфиденциальность секрета клиента, поэтому необходимо, чтобы токен был выпущен самим сервером аутентификации. Это менее безопасно, и рекомендуется, чтобы сервер был настроен так, чтобы отклонять вызовы неявного потока для использования API и разрешать это только для приложений на основе браузера и мобильных приложений.
Гибридный поток: поток OAuth 2.0, в котором
- код авторизации возвращается из конечной точки авторизации,
- некоторые токены возвращаются непосредственно из конечной точки авторизации, а другие возвращаются (в качестве второго этапа в обмен на код авторизации) из конечной точки токена.
- Используется там, где нужны оба потока.
смотрите спецификации - все уже записано:
http://openid.net/specs/openid-connect-core-1_0.html и http://tools.ietf.org/html/rfc6749
Кроме того, я недавно написал резюме, в котором разбито на разные типы приложений:
http://leastprivilege.com/2016/01/17/which-openid-connectoauth-2-o-flow-is-the-right-one/
Потоки, определенные в OAuth2, - это всего лишь несколько способов для клиента получить access token
от поставщика удостоверений. сервер; IdentityServer
в этом случае. Понять потоки будет непросто, если вы полностью не поймете сущности, указанные в блок-схемах, например Resource Owner
, User Agent
и Resource Server
. Краткое описание этих сущностей (особенно ролей) можно найти здесь .
Поток кода авторизации: выдает authorization code
перед выдачей access token
.
- Клиент запрашивает
authorization code.
- IdentityServer Проверяет клиента и запрашивает у владельца ресурса разрешение на выдачу
authorization code
. - Затем клиент запрашивает
access token
с заданнымauthorization code
- Сервер авторизации выдает
access token
прямо клиенту.
Неявный поток кода: выдает access token
даже без указания authorization code
.
- Клиент запрашивает
access token
напрямую. - IdentityServer пропускает проверку клиента (в некоторых сценариях, частично), но все же просит владельца ресурса предоставить разрешение на выдачу
access token
- Этот поток никогда не выдает
authorization code
.
Неявный поток считается идеальным потоком для клиента, использующего языки сценариев, такие как javascript
, поскольку клиенту не нужно отдельно запрашивать authorization code
и access token
, что, в свою очередь, сокращает один сетевой обход для клиент.
Поток учетных данных клиента: выдает access token
без разрешения владельца ресурса.
- Клиент запрашивает токен доступа напрямую.
- IdentityServer проверяет клиента и сразу же выдает
access token
.
Это идеально, когда клиент также является владельцем ресурса, поэтому ему не нужны никакие разрешения авторизации вплоть до access token
.
Поток владельца ресурса: выдает access token
, если у клиента есть учетные данные владельца ресурса (например, идентификатор / пароль).
- Клиент запрашивает
access token
напрямую. - IdentityServer проверяет клиента и удостоверяет личность владельца ресурса.
- Если это действительно так, клиент получает
access token
немедленно.
Этот поток идеально подходит для клиентов, которым, по вашему мнению, абсолютно безопасно делиться с ними идентификаторами и паролями.
Гибридный поток (поток OIDC): выдает authorization code
и access token
.
Это комбинация Authorization code flow
и Implicit code flow
. Вот почему он называется Hybrid
.
Пользовательский поток
Это буквально настраиваемый поток. Это можно использовать, когда вам нужен определенный процесс аутентификации / проверки в вашем бизнесе помимо всех спецификаций протокола в OAuth2
.
IdentityServer хорошо осведомлен о подобной ситуации и изначально поддерживает расширяемость. Шаблон фабрики, шаблон декоратора и IoC / DI упростят вам реализацию дополнительных функций на вашем IdentityServer.