Как реализовать авторизацию OAuth2 с помощью WSO2 API Manager
Я создал и опубликовал API с помощью WSO2 API Manager. Клиент API получает доступ через OAuth2 и предоставляет учетные данные клиента, отправляя ключ потребителя и секрет потребителя для запроса токена доступа. Но теперь мне нужно реализовать авторизацию посредством предоставления кода авторизации. Я должен использовать client_id и client_secret из WSO2 APIM и форму входа пользователя моего внутреннего приложения, а не пользователя WSO2 APIM.
Кто-нибудь может подсказать, возможно ли это и как это можно реализовать???
Документация WSO2 не описывает этот поток, и все примеры, которые я нашел, описывают процесс авторизации (OAuth2, authorization_code) только для пользователя WIM2 APIM.
2 ответа
Теперь мне нужно реализовать авторизацию с помощью предоставления кода авторизации. Я должен использовать client_id и client_secret из WSO2 APIM и форму входа пользователя моего внутреннего приложения, а не пользователя WSO2 APIM.
Если вы хотите использовать собственную (аутентификационную) форму аутентификации (приложения), самый простой вариант - использовать тип предоставления пароля, когда ваше приложение отправляет запрос токена вместе с учетными данными приложения и пользователя через бэкэнд-сервис.
Используя предоставление кода, вы предполагаете использовать конечную точку авторизации https://gateway:8243/authorize с параметрами, описанными в документации, и действительно, форма входа по умолчанию используется, когда пользователь еще не аутентифицирован
(У меня все еще есть желание уменьшить вопрос, чтобы не искать документацию)
Если вы все еще хотите использовать тип предоставления кода с собственной формой аутентификации, вы можете либо настроить форму входа по умолчанию шлюза wso2 api, либо настроить аутентификатор для использования формы вашего приложения (это довольно сложная тема, требующая настройки собственной реализации). и выходит за рамки вопроса / ответа)
У вас есть 2 варианта здесь без каких-либо настроек.
1) Если в вашем бэкэнде есть пользовательское хранилище, его можно настроить как вторичное пользовательское хранилище для APIM. Затем вы можете использовать любого пользователя в этом хранилище пользователей для аутентификации.
См. https://docs.wso2.com/display/ADMIN44x/Configuring+Secondary+User+Stores
2) Если описанный выше вариант невозможен, и если ваш внутренний IDP поддерживает какие-либо протоколы федерации SSO, такие как SAML2 или OIDC, вы можете настроить федерацию с помощью WSO2 IS.
См. https://docs.wso2.com/display/IS550/Single+Sign-On+and+Identity+Federation