WSO2 IS:通过 SOAP 使用 OAuth 授权代码流时出错 API
WSO2 IS: Error using OAuth Authorization Code flow with SOAP API
我正在使用 OAuth 授权代码流程来验证用户身份并根据 WSO2 身份服务器授权我的应用程序。我正在使用一个简单的 node/express 服务器,使用 Passport.js 来获取访问令牌,邮递员使用该访问令牌向 SOAP API 发出一些测试请求。
当使用 Bearer Token 方法授权我的应用程序时,我在 IS 日志中收到以下错误:0 active authenticators registered in the system. The system should have at least 1 active authenticator service registered.
我在 Postman 中收到以下错误:500 Internal Server Error
,响应正文如下, <faultstring>Authentication failure</faultstring>
.
这是它在 Postman 中的样子:
相同的访问令牌可用于 REST API 请求,例如“https://localhost:9443/scim2/Me”。
谁能告诉我这里缺少什么?
尝试从授权服务中手动获取访问令牌并使用它
第一步:获取授权码
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>
exp:
client_id=**abcdefgh12345678**
client_secret=**xyzsecretkey**
callback_url=**http://locahost/callback**
scope=openid
服务器:本地主机
base64encode(client_id:client_secret)= base64encode(abcdefgh12345678:xyzsecretkey ) => YWJjZGVmZ2gxMjM0NTY3ODp4eXpzZWNyZXRrZXk=
- GET
https://localhost:9443/oauth2/authorize?client_id=**abcdefgh12345678**&redirect_uri=**http://locahost/callback**&response_type=code&scope=openid
它会向回调url请求返回一个参数code,比如说code=this01is02your03code,请检查你的浏览器地址栏
HEADERS
Content-Type:application/x-www-form-urlencoded
Authorization:Basic **YWJjZGVmZ2gxMjM0NTY3ODp4eXpzZWNyZXRrZXk=**
BODY
grant_type:authorization_code
scope:openid
code:this01is02your03code
redirect_uri:http://locahost/callback
这将 return 一个访问令牌,假设服务器 return 编辑的令牌是 12345678ASDFGH
现在您可以使用此令牌调用任何 RestFull 或 SOAP 服务
Authorization: Bearer 12345678ASDFGH
WSO2 身份服务器中的 SOAP API 无法使用不记名令牌进行身份验证。他们可以使用基本身份验证和 cookie 进行身份验证。这就是在响应中获得 Authentication failure
的原因。
但是身份服务器中的 REST API 可以使用 Bearer 令牌进行身份验证。因此 /scim2/Me
使用访问令牌成功验证。
我正在使用 OAuth 授权代码流程来验证用户身份并根据 WSO2 身份服务器授权我的应用程序。我正在使用一个简单的 node/express 服务器,使用 Passport.js 来获取访问令牌,邮递员使用该访问令牌向 SOAP API 发出一些测试请求。
当使用 Bearer Token 方法授权我的应用程序时,我在 IS 日志中收到以下错误:0 active authenticators registered in the system. The system should have at least 1 active authenticator service registered.
我在 Postman 中收到以下错误:500 Internal Server Error
,响应正文如下, <faultstring>Authentication failure</faultstring>
.
这是它在 Postman 中的样子:
相同的访问令牌可用于 REST API 请求,例如“https://localhost:9443/scim2/Me”。
谁能告诉我这里缺少什么?
尝试从授权服务中手动获取访问令牌并使用它
第一步:获取授权码
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>
exp:
client_id=**abcdefgh12345678**
client_secret=**xyzsecretkey**
callback_url=**http://locahost/callback**
scope=openid
服务器:本地主机 base64encode(client_id:client_secret)= base64encode(abcdefgh12345678:xyzsecretkey ) => YWJjZGVmZ2gxMjM0NTY3ODp4eXpzZWNyZXRrZXk=
- GET
https://localhost:9443/oauth2/authorize?client_id=**abcdefgh12345678**&redirect_uri=**http://locahost/callback**&response_type=code&scope=openid
它会向回调url请求返回一个参数code,比如说code=this01is02your03code,请检查你的浏览器地址栏
HEADERS
Content-Type:application/x-www-form-urlencoded
Authorization:Basic **YWJjZGVmZ2gxMjM0NTY3ODp4eXpzZWNyZXRrZXk=**
BODY
grant_type:authorization_code
scope:openid
code:this01is02your03code
redirect_uri:http://locahost/callback
这将 return 一个访问令牌,假设服务器 return 编辑的令牌是 12345678ASDFGH
现在您可以使用此令牌调用任何 RestFull 或 SOAP 服务
Authorization: Bearer 12345678ASDFGH
WSO2 身份服务器中的 SOAP API 无法使用不记名令牌进行身份验证。他们可以使用基本身份验证和 cookie 进行身份验证。这就是在响应中获得 Authentication failure
的原因。
但是身份服务器中的 REST API 可以使用 Bearer 令牌进行身份验证。因此 /scim2/Me
使用访问令牌成功验证。