WSO2 ESB - 使用OAuth2服务

时间:2017-08-16 05:56:26

标签: oauth-2.0 wso2esb

我想要调用OAuth令牌服务来检索令牌。 以下是我的代理人。这是一个简单的休息端点调用,用于检索令牌。出于测试目的,我试图在响应中记录令牌。

DEBUG {org.apache.synapse.transport.http.wire} -  << "HTTP/1.1 415 Unsupported Media Type[\r][\n]" {org.apache.synapse.transport.http.wire}
DEBUG {org.apache.synapse.transport.http.wire} -  << "X-Frame-Options: DENY[\r][\n]" {org.apache.synapse.transport.http.wire}
DEBUG {org.apache.synapse.transport.http.wire} -  << "X-XSS-Protection: 1; mode=block[\r][\n]" {org.apache.synapse.transport.http

我打电话时收到以下回复。

{{1}}

如果有人能指导我在这里做错任何事,那将会很高兴。

2 个答案:

答案 0 :(得分:0)

我能够使用以下有效负载调用该服务。

<payloadFactory media-type="xml">
            <format>
                <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
                    <soapenv:Body>
                        <root>
                            <grant_type>client_credentials</grant_type>
                            <client_id>G6Dk_3ZdrXOfPiuctufVq6GfTWoa</client_id>
                            <client_secret>jxA8NTkEClE5xGUvGvvhVTDyXM4a</client_secret>
                        </root>
                    </soapenv:Body>
                </soapenv:Envelope>
            </format>
            <args />
        </payloadFactory>

还必须添加内容类型如下。

<property name="messageType" scope="axis2" type="STRING" value="application/x-www-form-urlencoded" />
<property name="ContentType" scope="axis2" type="STRING" value="application/x-www-form-urlencoded" /> 

这工作并检索了令牌。

答案 1 :(得分:0)

这是我在组件中使用的模板来设置oAuth令牌,你可能会根据你的情况调整一下(听起来你不需要grantType或用户凭证)

<?xml version="1.0" encoding="UTF-8"?>
<template name="getToken" xmlns="http://ws.apache.org/ns/synapse">
    <parameter name="tokenURL"/>
    <parameter name="clientId"/>
    <parameter name="clientSecret"/>
    <parameter name="grantType"/>
    <sequence>
        <property description="Base64 crendetials" expression="base64Encode(fn:concat($func:clientId,':',$func:clientSecret))" name="credentials" scope="default" type="STRING"/>
        <property description="Authentication" expression="fn:concat('Basic ', get-property('credentials'))" name="Authorization" scope="transport" type="STRING"/>
        <header name="Content-Type" scope="transport" value="application/x-www-form-urlencoded"/>
        <property name="messageType" scope="axis2" type="STRING" value="application/x-www-form-urlencoded"/>
        <property name="DISABLE_CHUNKING" scope="axis2" type="STRING" value="true"/>
        <property expression="$func:tokenURL" name="uri.var.authUrl" scope="default" type="STRING"/>
        <property expression="$func:grantType" name="uri.var.grantType" scope="default" type="STRING"/>
        <call blocking="true">
            <endpoint>
                <http method="post" uri-template="{uri.var.authUrl}?grant_type={uri.var.grantType}"/>
            </endpoint>
        </call>
        <property expression="json-eval($.access_token)" name="OAuth_Token" scope="default" type="STRING"/>
        <property action="remove" description="Remove Headers" name="TRANSPORT_HEADERS" scope="axis2"/>
        <property description="Authorization" expression="fn:concat('Bearer ',get-property('OAuth_Token'))" name="Authorization" scope="transport" type="STRING"/>
    </sequence>
</template>