WSO2 IS: ошибка при использовании потока кода авторизации OAuth с SOAP API
Я использую поток кода авторизации OAuth для аутентификации пользователя и авторизации моего приложения на сервере идентификации WSO2. Я использую простой узел / экспресс-сервер с Passport.js, чтобы получить токен доступа, и Почтальон, чтобы использовать этот токен доступа, чтобы сделать несколько тестовых запросов к API-интерфейсам SOAP.
При использовании метода Bearer Token для авторизации моего приложения в журналах IS появляется следующая ошибка: 0 active authenticators registered in the system. The system should have at least 1 active authenticator service registered.
Я получаю следующую ошибку в Почтальоне: 500 Internal Server Error
со следующим телом ответа, <faultstring>Authentication failure</faultstring>
,
Вот как это выглядит в Почтальоне:
Тот же токен доступа работает с запросом API REST, например " https://localhost:9443/scim2/Me".
Кто-нибудь может сказать мне, что мне здесь не хватает?
2 ответа
API-интерфейсы SOAP в WSO2 Identity Server нельзя аутентифицировать с помощью токенов на предъявителя. Они могут быть аутентифицированы с помощью обычной аутентификации и файлов cookie. Вот причина получения Authentication failure
в ответ.
Но API REST на Identity Server могут быть аутентифицированы с помощью токенов Bearer. Так /scim2/Me
аутентифицироваться успешно с токеном доступа.
Попробуйте вручную получить токен доступа от службы авторизации и использовать его
Шаг 1: Получить код авторизации
https://<is_server_url>:9443/oauth2/authorize?client_id=<id>&redirect_uri=<callback_url>&response_type=code&scope=openid
Вы получите код авторизации на URL обратного вызова
Шаг 2. Вызовите сервис токенов, чтобы получить токен доступа.
Post https://<is_server_url>:9443/oauth2/token
Content-Type:application/x-www-form-urlencoded
Authorization:Basic <base64encoded "<client_id>:<client_secret>">
grant_type:authorization_code
scope:openid
code:<code_from_step_1>
redirect_uri:<callback_url>
ехр:
client_id=**abcdefgh12345678**
client_secret=**xyzsecretkey**
callback_url=**http://locahost/callback**
scope=openid
сервер: localhost base64encode (client_id: client_secret) = base64encode (abcdefgh12345678:xyzsecretkey) => YWJjZGVmZ2gxMjM0NTY3ODp4eXpzZWNyZXRrZXk =
- ПОЛУЧИТЬ
https://localhost:9443/oauth2/authorize?client_id=**abcdefgh12345678**&redirect_uri=**http://locahost/callback**&response_type=code&scope=openid
он отправит запрос на URL обратного вызова с кодом параметра, скажем, code =this01is02your03code, проверьте адресную строку браузера
HEADERS
Content-Type:application/x-www-form-urlencoded
Authorization:Basic **YWJjZGVmZ2gxMjM0NTY3ODp4eXpzZWNyZXRrZXk=**
ТЕЛО
grant_type:authorization_code
scope:openid
code:this01is02your03code
redirect_uri:http://locahost/callback
это вернет токен доступа, скажем, токен, возвращаемый сервером, 12345678ASDFGH
Теперь вы можете использовать этот токен для вызова любого сервиса RestFull или SOAP
Authorization: Bearer 12345678ASDFGH