【问题标题】:Get OAuth2 Token in XML format from Mule OAuth2 provider; currently it returns it as JSON从 Mule OAuth2 提供商处获取 XML 格式的 OAuth2 Token;目前它以 JSON 形式返回
【发布时间】:2015-10-07 13:02:51
【问题描述】:

我已经使用 Mule 密码授权类型流程实现了 OAuth2 提供程序,如 https://developer.mulesoft.com/docs/display/current/Creating+an+OAuth+2.0a+Web+Service+Provider 所示。但它以 JSON 格式返回令牌响应;我想要 XML 格式的,我该怎么做?

    <spring:beans>     
        <ss:authentication-manager id="resourceOwnerAuthenticationManager">
            <ss:authentication-provider>
                <ss:user-service id="resourceOwnerUserService">
                    <ss:user name="user" password="password" authorities="RESOURCE_OWNER" />
                </ss:user-service>
            </ss:authentication-provider> 
        </ss:authentication-manager>
    </spring:beans>

    <mule-ss:security-manager>
        <mule-ss:delegate-security-provider
            name="resourceOwnerSecurityProvider"
            delegate-ref="resourceOwnerAuthenticationManager" />
    </mule-ss:security-manager>

<oauth2-provider:config
        name="oauth2Provider"
        providerName="SampleAPI"
        supportedGrantTypes="RESOURCE_OWNER_PASSWORD_CREDENTIALS"
        port="8083"
        authorizationEndpointPath="sampleapi/api/authorize"
        accessTokenEndpointPath="sampleapi/api/token"
        resourceOwnerSecurityProvider-ref="resourceOwnerSecurityProvider"
        scopes="READ_RESOURCE POST_RESOURCE" doc:name="OAuth provider module">
            <oauth2-provider:clients>
                <oauth2-provider:client clientId="myclientid3" secret="myclientsecret"
                                        type="CONFIDENTIAL" clientName="Mule Bookstore" description="Mule-powered On-line Bookstore">
                    <oauth2-provider:redirect-uris>
                        <oauth2-provider:redirect-uri>http://localhost*</oauth2-provider:redirect-uri>
                    </oauth2-provider:redirect-uris>
                    <oauth2-provider:authorized-grant-types>
                        <oauth2-provider:authorized-grant-type>PASSWORD</oauth2-provider:authorized-grant-type>
                    </oauth2-provider:authorized-grant-types>
                    <oauth2-provider:scopes>
                        <oauth2-provider:scope>READ_RESOURCE</oauth2-provider:scope>
                        <oauth2-provider:scope>POST_RESOURCE</oauth2-provider:scope>
                    </oauth2-provider:scopes>
                </oauth2-provider:client>
            </oauth2-provider:clients>
    </oauth2-provider:config>

【问题讨论】:

  • 为什么需要 in 和 xml 格式。 ?
  • 因为我的 RAML 服务采用 XML 格式,并且我希望令牌采用这种格式,因此我不需要 OAuth2 令牌的一种格式和 REST 服务的另一种格式。可以吗。带有 SPring Security 的 OAuth2 Provider 具有该功能。可以在 Mule OAuth2 实现中实现吗?
  • 我希望您只需要 OAuth 令牌。在这种情况下,您可以封装调用检索 Token i 消息丰富器的组件,然后仅将令牌设置为 FlowVariables 并在您需要时在流中使用它们。这对您的用例有用吗?
  • 谢谢 Neeraj。实际上,在我的要求中,只有 OAuth2 和 REST 服务托管在 Mule ESB 上。 REST 消费者是基于 Java 和基于 Microsoft SSIS 的多个;我也需要 XML 格式的令牌。
  • 你好 Naveen,这不可能吗?由于我的服务使用 XML 进行通信,因此我也希望有 XML 格式的 TOKEN 响应。

标签: spring-security oauth-2.0 mule mule-studio


【解决方案1】:

我认为如果你想这样做,你需要在流程结束时创建一个选择,然后如果“Accept”标头等于“application/xml”,则将自定义转换器从 json 转换为 xml。因为OAuth2 Spec 表示返回的令牌应该是 json。我是用 spring security oauth2 做的,但这是自定义的。

【讨论】:

  • 谢谢伊斯梅尔。能否请您分享代码示例。
  • 上周我学习了更多,您使用的是什么版本的 Anypoint Studio?因为在 Mule 3.7 中,您只需将 Transformer Message 组件放入其中即可将 json 转换为 xml。在此处查看示例docs.mulesoft.com/mule-user-guide/v/3.7/…
  • 感谢 Ismael,我使用的是 Mule 3.7,但是当我将 json 到 xml 转换器放入我在这个问题中输入的代码中时,XSD 验证在 Mule 中失败并且我的 Mule 应用程序无法部署。我认为 Mule 不允许在 的任何地方进行 json 到 xml 的转换。所以我无法获取 xml 格式的令牌。如果我错了,请纠正我。
  • 我明白你的意思。您能否公开其他身份验证服务,调用您当前的身份验证服务将收到的响应转换为客户端?
  • 谢谢 Ismael 我明白你的意思,但我不知道该怎么做。
【解决方案2】:

您可能想要创建一个新的 http mule 流来调用 oauth2-provider 令牌端点并将其响应转换为 xml。

创建一个新的 mule 配置文件:

<flow name="token-json-to-xmlFlow">
   <http:listener> <-- new token endpoint
   <http:request> <-- invoke the oauth2 provider token 
   <transform-message> <-- json to xml transformer
</flow>

希望这会有所帮助。

【讨论】:

  • 谢谢文斯。你有任何可以与我粘贴的代码集成的示例吗?
  • 只需创建一个将调用您现在拥有的令牌端点的新流程。 http 入站 --> 调用 http token url --> 将 json 转换为 xml
猜你喜欢
  • 2015-10-28
  • 2017-01-28
  • 1970-01-01
  • 2020-11-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-07
  • 2011-12-10
相关资源
最近更新 更多