Использование внешнего поставщика OIDC с IdentityServer + SPA (Angular) + WebApi
IdentityServer новичок здесь.
Мы хотим перенести нашу текущую аутентификацию на основе токенов канала-носителя Owin/jwt на IdentityServer4. На данный момент наш webapi также выступает в качестве сервера авторизации (создание токена, проверка и т. Д.), И мы хотим отделить его с помощью промежуточной службы авторизации (IdentyServer4) и перейти на потоки openid connect
Мы используем SPA (Angular) с ASP.NET WebAPI и хотим использовать комбинацию
1) Либо неявный поток OpenId Connect, либо поток кода авторизации с PKCE для аутентификации в нашем Angular App и защиты нашего webapi с помощью IdentityServer4 в качестве AuthService. Для угловой части мы планируем использовать lib -> https://github.com/damienbod/angular-auth-oidc-client
2) Пользовательский внешний поставщик OpenId Connect (который использует скрытый ключ), который предлагает конечную точку потока кода авторизации oidc. Мы также планируем предложить oidc google, facebook, twitter auth.
Вот, например, как выглядит URL-адрес настраиваемого внешнего поставщика oidc:
URL авторизации -> https: // externalcustomoidcprovider / auth / openid-connect? Response_type = code & client_id = 1234 & redirect_uri = redirecturl & scope = openid
URL-адрес конечной точки токена для отправки кода авторизации и получения токенов -> https://externalcustomoidcprovider/auth/openid-connect/token
Я не понимаю, как будет выглядеть поток аутентификации в этом случае и как это настроить в IdentyServer, в конфигурации WebApi и в настройках angular-auth-oidc-client. Спа напрямую вызывает URL-адрес полномочий из внешней конечной точки поставщика OIDC для получения кода и токена доступа? Но как webapi/IdentityServer знает, как проверить / обработать этот токен? Или мне нужно зарегистрировать внешнего поставщика OIDC в IdentityServer и позволить SPA вызывать IdentityServer для URL-адреса полномочий и позволить IdentiyServer обрабатывать поток аутентификации? Как будет выглядеть конфигурация webapi для проверки токенов?
Возможно ли достичь этого с помощью IdentityServer и каков наилучший способ объединить эти два механизма аутентификации? Какие-нибудь примеры проектов, которые показывают этот сценарий в действии?
Спасибо за любой совет или помощь!