Войдите в систему с помощью oid c -client- js и перенаправьте в другое веб-приложение. - PullRequest
0 голосов
/ 09 января 2020

Я борюсь с процессом аутентификации. Не уверен, что он хорошо продуман.

enter image description here

У меня есть приложение angular только для входа в систему и регистрации пользователей. В случае, если пользователь хочет войти в систему 1, он заполняет только поле электронной почты, а затем он будет перенаправлен 2 на страницу аутентификации (это другой веб-сайт, использующий identityserver4), где он может ввести свой пароль. И, наконец, при последнем перенаправлении в приложение angular он хочет получить доступ изначально 3.

Я использую oid c -client- js.

Проблема в том, что я не могу завершить аутентификацию. Вызов signinRedirectCallback вызывает ошибку No matching state found in storage. Я думал, что информация, код, состояние, session_state и т. Д. c. (полученных от службы авторизации через параметры запроса) достаточно для завершения аутентификации. Но так не кажется ...

Должен ли этот процесс работать как-нибудь? Или я должен интегрировать компонент входа в каждое из моих приложений, чтобы перенаправление после входа в систему 3 возвращалось к тому же приложению, и состояние хранилища будет в порядке.

Ответы [ 2 ]

0 голосов
/ 13 января 2020

Процесс (рабочий процесс), который я пробовал, был неправильным. Чтобы завершить аутентификацию, я должен перенаправить обратно на login.mydomain.ch из-за PKCE (Proof Key for Code Exchange). Вернувшись на login.mydomain.ch, я могу перенаправить оттуда в другое приложение. Поскольку IdentityServer поддерживает SSO (единый вход), пользователю не нужно снова регистрироваться.

0 голосов
/ 10 января 2020

Это должно работать следующим образом:

  • Приложение Angular реализует клиентскую часть open id connect connect и перенаправляет на Identity Server, затем получает ответ для входа в систему
  • Вы уже использует лучшую библиотеку в oid c -client- js, которая сделает большую часть этого за вас
  • Логины и регистрация пользователя полностью выводятся из вашего приложения и запускаются Identity Server во время входа в систему redirect

Большинство компаний используют сервер облачной авторизации и не должны кодировать какую-либо внешнюю защиту. В качестве примера см. this AWS, напишите о том, как используется встроенная функциональность.

Если вы используете Identity Server, вам нужно будет заставить его делать то же самое. У него есть точки расширяемости, чтобы включить это, но это может превратиться в немало работы.

...