获取本地条目的内容进入基本授权属性

时间:2016-04-22 11:05:19

标签: wso2 wso2esb

我使用esb作为调解员,基本上将休息转换为肥皂。我调用的soap是安全的,所以我需要一个Authorization属性。我使用这项服务没问题:

<resource methods="GET" uri-template="/getAllZones">
      <inSequence>
         <property xmlns:ns="http://org.apache.synapse/xsd" name="Authorization" expression="fn:concat('Basic ', base64Encode('user:password'))" scope="transport"></property>
         <property name="DISABLE_CHUNKING" value="true" scope="axis2"></property>
         <payloadFactory media-type="xml">
            <format>
               <zon:GetAllZones xmlns:zon="http://someUrl.xsd">
                  <Filter></Filter>
               </zon:GetAllZones>
            </format>
            <args></args>
         </payloadFactory>
         <send>
            <endpoint key="myEndpoint"></endpoint>
         </send>
         <log level="full"></log>
      </inSequence>
      <outSequence>
         <property name="messageType" value="application/json" scope="axis2" type="STRING"></property>
         <send></send>
      </outSequence>
   </resource>

但我想将用户和密码存储为ESB中的本地条目。我试过这个:

<property xmlns:ns="http://org.apache.synapse/xsd" name="Authorization" expression="fn:concat('Basic ', base64Encode(get-property('user'):get-property('password')))" scope="transport"></property>

但它不起作用。有任何想法吗? 提前致谢

1 个答案:

答案 0 :(得分:2)

您可以将值存储在注册表中。然后使用带范围注册表的get-property访问它们。

例如,如果您在conf:/creds/user中存储了一些注册表资源,并且具有用户名和密码属性,则可以使用以下命令访问这些资源:

get-property('registry', 'conf:/creds/user@username')get-property('registry', 'conf:/creds/user@password')

例如,为了访问属性设置,如下所示: Setting up Registry Resource Properties

你会使用类似的东西:

  <inSequence>
     <log level="custom">
        <property name="Username" expression="get-property('registry', 'conf:/user@username')"/>
        <property name="Password" expression="get-property('registry', 'conf:/user@password')"/>
        <property name="Encoded" expression="fn:concat('Basic ', base64Encode(fn:concat(get-property('registry', 'conf:/user@username'), ':', get-property('registry', 'conf:/user@username'))))"/>
     </log>
     <respond/>
  </inSequence>

但您可能需要考虑加密密码。在这种情况下,您应该使用ESB中的安全保管库。您可以使用别名{wso2:vault-lookup('user')}访问安全保管库中的某些内容。

https://docs.wso2.com/display/ESB490/Working+with+Passwords中的更多详情。