如何通过SOAP请求在WSO2服务提供商中添加OAuth/OpenID配置
前置准备
- 确认你使用的WSO2 Identity Server版本适配对应管理服务API,以下为WSO2 IS 5.10+版本通用操作逻辑
- 提前获取拥有服务提供商操作权限的管理员账号凭据,生产环境请替换默认的admin账号
- 所有配置类请求都需要携带管理员身份认证后的会话Cookie,需先完成身份校验再调用配置接口
第一步:获取管理员会话Cookie
调用AuthenticationAdmin服务的login接口获取认证凭证,请求样例如下:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:aut="http://authentication.services.core.carbon.wso2.org"> <soapenv:Header/> <soapenv:Body> <aut:login> <aut:username>你的管理员账号</aut:username> <aut:password>你的管理员密码</aut:password> <aut:remoteAddress>调用端IP地址</aut:remoteAddress> </aut:login> </soapenv:Body> </soapenv:Envelope>
请求地址为https://<WSO2_IS_HOST>:<PORT>/services/AuthenticationAdmin,请求头设置Content-Type: text/xml,请求成功后从响应头提取JSESSIONID作为后续请求的Cookie凭证,请求未携带有效Cookie会直接返回401未授权错误。
第二步:添加OAuth/OpenID Connect配置
调用IdentityApplicationManagementService服务的对应接口,服务提供商已存在就调用updateApplication接口,未存在就调用createApplication接口,请求体中需包含OAuth/OIDC相关配置参数,完整请求样例(更新已存在服务提供商场景)如下:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://model.common.application.identity.carbon.wso2.org/xsd"> <soapenv:Header/> <soapenv:Body> <xsd:updateApplication> <xsd:applicationName>已存在的服务提供商名称</xsd:applicationName> <xsd:applicationDTO> <xsd:applicationName>你的服务提供商名称</xsd:applicationName> <xsd:description>服务提供商描述</xsd:description> <xsd:inboundProtocols> <xsd:type>oauth2</xsd:type> <xsd:properties> <xsd:name>OAuthClientConfiguration</xsd:name> <xsd:value> { "callbackUrl": "https://你的应用回调地址", "grantTypes": "authorization_code,refresh_token,client_credentials", "tokenType": "JWT", "accessTokenValidity": 3600, "refreshTokenValidity": 86400, "idTokenValidity": 3600, "publicClient": false, "skipConsent": true } </xsd:value> </xsd:properties> </xsd:inboundProtocols> </xsd:applicationDTO> </xsd:updateApplication> </soapenv:Body> </soapenv:Envelope>
请求地址为https://<WSO2_IS_HOST>:<PORT>/services/IdentityApplicationManagementService,请求头除Content-Type: text/xml外,必须携带第一步获取的Cookie: JSESSIONID=xxxxxx参数。
第三步:配置校验
请求成功后可以调用同一服务的getApplication接口查询服务提供商详情,确认OAuth/OIDC配置已写入,也可以直接在WSO2管理控制台的服务提供商详情页,查看入站认证配置下的OAuth/OpenID Connect配置项是否符合预期。
注意:如果你的WSO2实例开启了CSRF防护,需要在请求头中额外携带
X-CSRF-Token参数,该参数可从第一步登录接口的响应头中获取。
内容的提问来源于stack exchange,提问作者Java

