Каковы перенаправления между частями первой и второй частей кода авторизации OIDC OneLogin? - PullRequest
0 голосов
/ 17 января 2019

Мне любопытно, что происходит за кулисами в потоке входа в OneLogin OIDC. Их статьи поддержки упоминают две части потока:

GET Поток кода авторизации pt. 1 - здесь вы перенаправляете браузер на конечную точку openid-connect.onelogin.com/oidc/auth, чтобы получить одноразовый код, который можно обменять на долгосрочные учетные данные.

POST Auth Code Flow pt. 2 - здесь пользователь перенаправляется обратно на ваш зарегистрированный серверный обратный вызов, указанный в первой части, и вы должны POST с вашего сервера завершить получение своих учетных данных.

Однако между этими двумя шагами мой браузер делает еще несколько остановок из-за того, что OneLogin дает 302 местоположения перед моим указанным обратным вызовом. Конечный поток выглядит так:

  1. Хит конечной точки /login моего сервера
  2. Мой сервер выдает перенаправление 302 на https://mysubdomain.onelogin.com/oidc/auth?response_type=code&client_id=${client}&redirect_uri=${server}%2Foauth%2Fcallback
  3. OneLogin выполняет перенаправление 302 на https://mysubdomain.onelogin.com/trust/openid-connect/v2?client_id=${client}&grant=${some uuid}
  4. OneLogin выполняет перенаправление 302 на https://openid-connect.onelogin.com/oidc/auth/${uuid from step 3}/login?ctw=${a jwt}
  5. OneLogin выдает перенаправление 302 на https://mysubdomain.onelogin.com/oidc/auth/${same uuid from step 3}
  6. OneLogin (наконец) выдает перенаправление 302 на ${server}/oauth/callback с запрашиваемым кодом доступа ?code= и дополнительным параметром запроса state.
  7. Мой сервер выдает 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.

...