Next Topic

Previous Topic

Book Contents

VSA API Web 服務安全

一般

依預設,使用任何有效的 VSA 使用者證書通過世界上的任意 IP 地址均可存取 API Web 服務。在此預設配置下,有效的使用者名稱/密碼組合被視為源自任意電腦的驗證。

在任意配置中,VSA 提供的 hash.dll 必須用於為提交內容加密密碼,hash.dll 的實施詳細資訊包含在提供的樣本源代碼中。

成功的驗證請求發出 SessionID 後,此 SessionID 必須在調用每個服務的情況下提交,並僅在從將其發出的 IP 地址收到時才有效。發出的 SessionID 在一段不活動期間後將過期。

通過準備和部署 AccesRules.xml 檔可增強安全,此檔由 VSA API Web 服務使用,以基於從中收到請求的 IP 地址來定義存取規則。IP 篩選是業務到業務系統中普遍使用的一種機制,用於確保僅接受來自合作夥伴伺服器的請求。

AccesRules.xml 檔分為三個部分:

  • 預設存取規則
  • IP 範圍
  • 使用者對應

Note: 127.0.0.1 (localhost) 始終具有對任何帳戶的存取權,而不管配置如何。

XML 結構

<AccessRules>
	<DefaultAccessRules>
		<GrantAnyIPToUndefinedUsers/>
		<GrantAllIPRangesToUndefinedUsers/>
		<DenyAccessToUndefinedUsers/>
	</DefaultAccessRules>
	<IPRanges>
		<IPRange RangeID="" FromIPAddress="" ToIPAddress="" RangeDescription=""/>
		<IPRange RangeID="" FromIPAddress="" ToIPAddress="" RangeDescription=""/>
	</IPRanges>
	<UserMapping>
		<User UserName="" RangeID="" GrantAllRanges="" GrantAnyIP="" DenyAccess=""/>
		<User UserName="" RangeID="" GrantAllRanges="" GrantAnyIP="" DenyAccess=""/>
	</UserMapping>
</AccessRules>

預設存取規則

此部分中的元素用於針對未專門在「UserMapping」區段中聲明的帳戶定義存取規則。

<GrantAnyIPToUndefinedUsers/> true/false

true:不在 UserMapping 中的任何使用者均可通過任意 IP 地址獲得存取權。

<GrantAllIPRangesToUndefinedUsers/> true/false

true:不在 UserMapping 中的任何使用者均可通過 IPRanges 中包含的任意 IP 地址獲得存取權。

<DenyAccessToUndefinedUsers/> true/false

true:不在 UserMapping 中的任何使用者均無存取權。

IP 範圍

此部分用於按用來分配使用者存取權的 IP 定義特定電腦,或電腦範圍。

RangeID="integer"

可變參數,為使用者分配的整數,用於在 UserMapping 中指明範圍。

FromIPAddress="string"

起始 IP 地址,自身包括在內,四組數位中的前三組必須與 ToIPAddress 相符。

ToIPAddress=" string"

結束 IP 地址,自身包括在內。四組數位中的前三組必須與 FromIPAddress 相符。

RangeDescription=" string"

對 IP 範圍的描述。例如:「產品伺服器」。

使用者對應

UserName="string"

VSA 管理員名稱。VSA API Web 服務與 VSA 使用相同的證書和密碼加密,因此,如果在 VSA 中變更密碼,請確保在 VSA API Web 服務用戶端實施中也變更密碼。

RangeID="integer"

用於指向在 IPRanges 部分中定義的 IP 範圍,使用者可以使用多個 UserMapping 元素來表達其可以從中進行存取的所有 IP 範圍。該屬性在使用了以下授予/拒絕屬性之一時不適用。

GrantAllRanges="true/false"

true:使用者有權存取在 IPRanges 部分中定義的任何範圍。

GrantAnyIP=" true/false"

true:使用者可從任意 IP 地址進行存取。

DenyAccess=" true/false"

true:使用者無任何存取權。

樣本存取配置 XML

<AccessRules>
	<DefaultAccessRules>
		<GrantAnyIPToUndefinedUsers>false</GrantAnyIPToUndefinedUsers>
		<GrantAllIPRangesToUndefinedUsers>false</GrantAllIPRangesToUndefinedUsers>
		<DenyAccessToUndefinedUsers>true</DenyAccessToUndefinedUsers>
	</DefaultAccessRules>
	<IPRanges>
		<IPRange RangeID="1" FromIPAddress="192.168.214.01" ToIPAddress="192.168.214.10" RangeDescription="Partner X Production Web Farm"/>
		<IPRange RangeID="2" FromIPAddress="192.168.15.102" ToIPAddress="192.168.15.102" RangeDescription="Senior Developer Machine"/>
		<IPRange RangeID="3" FromIPAddress="192.168.15.105" ToIPAddress="192.168.15.109" RangeDescription="Sales Demo Machines"/>
		<IPRange RangeID="4" FromIPAddress="192.168.210.35" ToIPAddress="192.168.210.35" RangeDescription="Interal QA Machine"/>
	</IPRanges>
	<UserMapping>
		<User UserName="B2BMasterAdmin" RangeID="1" GrantAllRanges="false" GrantAnyIP="false" DenyAccess="false"/>
		<User UserName="DevTestAccount" RangeID="2" GrantAllRanges="false" GrantAnyIP="false" DenyAccess="false"/>
		<User UserName="SalesTestAccount" RangeID="3" GrantAllRanges="false" GrantAnyIP="false" DenyAccess="false"/>
		<User UserName="SalesTestAccount2" RangeID="3" GrantAllRanges="false" GrantAnyIP="false" DenyAccess="false"/>
		<User UserName="QAMasterAdmin" RangeID="4" GrantAllRanges="false" GrantAnyIP="false" DenyAccess="false"/>
		<User UserName="SalesTravellingTestAccount" RangeID="" GrantAllRanges="false" GrantAnyIP="true" DenyAccess="false"/>
		<User UserName="Bob" RangeID="" GrantAllRanges="true" GrantAnyIP="false" DenyAccess="false"/>
		<User UserName="Sally" RangeID="" GrantAllRanges="false" GrantAnyIP="false" DenyAccess="true"/>
	</UserMapping>
</AccessRules>