0

Я пытаюсь использовать IdentityServer3, но ни один из потоков не выпирал, что я хотел бы достичьзапрашивающая маркер непосредственно из IdentityServer3 с помощью JavaScript, используя имя пользователя/пароль

  1. одной страницы приложения (SPA) письменного только в HTML и Javascript пытается получить доступ к защищенной конечной точке API (в этом случае ASP.NET Web API v2).
  2. HTTP-401 возвращается, так как API, конечная точка защищена
  3. СП запрашивает маркер непосредственно из IdentityServer передавая имя пользователя и пароль
  4. IdentityServer3 передает обратно маркер авторизации, который включает в себя имя пользователя и формулу изобретение, связанное с имя пользователя
  5. SPA снова пытается получить доступ к конечной точке API, но передает токен-носитель в заголовке и разрешен доступ
  6. Наконец, я хотел бы реализовать токены обновления, чтобы SPA не должен был вводить имя пользователя и пароль a второй раз.

Течение Я посмотрел на:

неявного Flow - Предполагает редирект на IdentityServer в качестве средства аутентификации, который делает запрос. Я хотел бы напрямую аутентифицироваться с помощью IdentityServer. Также с IdentityServer3 после входа в систему страница представлена ​​страницей согласия с запросом пользователя, хотят ли они поделиться этой информацией. Поскольку это внутренний логин, применимый только к рассматриваемому API, это кажется неуместным.

ресурсов Владелец Flow - Я понимаю, что этот поток требует client_secret, которое было бы невозможно сохранить в тайне в SPA

Может быть, я делаю это более сложный, чем нужно, но ни один из примеров, которые я похоже, придерживаются шагов, описанных выше. Можно ли использовать IdentityServer3?

ответ

1

Если клиентское приложение собирает имя пользователя/пароль, то вы используете поток пароля владельца ресурса. Но, используя этот поток, вы пропустите единый вход и любые другие функции рабочего процесса, которые вы закодировали в IdentityServer.

Рекомендованный подход - это неявный поток, при котором вы перенаправляете на IdentityServer. Экран согласия, отображаемый IdentityServer, может быть отключен (это параметр конфигурации для каждого клиента).

+0

Как можно снять экран согласия? – webworm

+0

Если функции единого входа не нужны (просто защитите мой собственный API), может ли IdentityServer3 действовать только как маркер-эмитент и валидатор? – webworm

+0

«это параметр конфигурации для каждого клиента» - это означает, что это параметр на клиенте –