Мне любопытно, что происходит за кулисами в потоке входа в OneLogin OIDC. Их статьи поддержки упоминают две части потока:
GET
Поток кода авторизации pt. 1 - здесь вы перенаправляете браузер на конечную точку openid-connect.onelogin.com/oidc/auth
, чтобы получить одноразовый код, который можно обменять на долгосрочные учетные данные.
POST
Auth Code Flow pt. 2 - здесь пользователь перенаправляется обратно на ваш зарегистрированный серверный обратный вызов, указанный в первой части, и вы должны POST
с вашего сервера завершить получение своих учетных данных.
Однако между этими двумя шагами мой браузер делает еще несколько остановок из-за того, что OneLogin дает 302 местоположения перед моим указанным обратным вызовом. Конечный поток выглядит так:
- Хит конечной точки
/login
моего сервера
- Мой сервер выдает перенаправление 302 на
https://mysubdomain.onelogin.com/oidc/auth?response_type=code&client_id=${client}&redirect_uri=${server}%2Foauth%2Fcallback
- OneLogin выполняет перенаправление 302 на
https://mysubdomain.onelogin.com/trust/openid-connect/v2?client_id=${client}&grant=${some uuid}
- OneLogin выполняет перенаправление 302 на
https://openid-connect.onelogin.com/oidc/auth/${uuid from step 3}/login?ctw=${a jwt}
- OneLogin выдает перенаправление 302 на
https://mysubdomain.onelogin.com/oidc/auth/${same uuid from step 3}
- OneLogin (наконец) выдает перенаправление 302 на
${server}/oauth/callback
с запрашиваемым кодом доступа ?code=
и дополнительным параметром запроса state
.
- Мой сервер выдает 302 туда, куда пользователь хотел пойти.
Что случилось с mysubdomain
в URL-адресах OneLogin? Документы OneLogin подразумевают, что целевой URL почти для каждого запроса должен иметь форму https://<region>.onelogin.com/oidc/auth?client_id=<client id>&redirect_uri=<redirect uri>&response_type=code&scope=openid
, где
<region>
объясняется как
регион требуется строка
Укажите регион вашего экземпляра OneLogin.
- openid-connect
- OpenID-подключения-ес
например. Если ваш экземпляр OneLogin находится в Европе, используйте https://openid-connect-eu.onelogin.com/oidc
Если я настраиваю сервер на перенаправление первого вызова (# 2 выше) вместо openid-connect.onelogin.com
, перенаправление на шаге 3. переходит к mysubdomain.onelogin.com
до того, как 4. возвращается к openid-connect.onelogin.com
. Удобно, что это работает в любом случае! Но я хотел бы знать, что происходит, так как я не нашел ни одного идентификатора субдомена, упомянутого где-либо в части OIDC документации OneLogin.
Где находится документация на конечных точках /trust/openid-connect/
и /oidc/auth/${uuid}
? (В документах, на которые я ссылался выше для конечной точки /oidc/auth
, не упоминается параметр пути uuid.) Являются ли эти только что рассмотренные детали реализации, о которых разработчики и конечные пользователи не должны знать?
Что такое uuid, который отображается на шаге 3 и сохраняется в цепочке перенаправления? Это не clientId, и, насколько я могу судить, это не что-то, что возвращает его к окончательному обратному вызову на шаге 6.