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 =

  1. ПОЛУЧИТЬ https://localhost:9443/oauth2/authorize?client_id=**abcdefgh12345678**&redirect_uri=**http://locahost/callback**&response_type=code&scope=openid

он отправит запрос на URL обратного вызова с кодом параметра, скажем, code =this01is02your03code, проверьте адресную строку браузера

  1. POST https://localhost:9443/oauth2/token

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
Другие вопросы по тегам