我有一個實現了IAuthorizationPolicy的類。我基於擁有我所有基礎級別角色的登錄用戶(我也使用聲明完成了此操作)設置了一個自定義Principal對象。現在我想根據作爲消息參數傳入的鍵值更改特定主體的角色。通過方法改變WCF安全角色/聲明參數
我遇到的問題是請求消息無法在授權策略類中讀取,因爲我無權將消息寫回請求上下文。我可以使用CheckAccess方法的重寫複製並讀取ServiceAuthorizationManager派生類中的消息。但是,我必須確保在執行此操作之前已經調用了GetAuthorizationPolicies方法。
我在尋找關於如何根據消息是否包含特定參數來改變委託人角色的建議。基本上,當評估呼籲我想這樣做的策略方法ID:
string myObjectId = null;
if (!messageCopy.IsEmpty)
{
System.Xml.XmlDictionaryReader xdr = messageCopy.GetReaderAtBodyContents();
xdr.ReadToDecendant("objectId");
if (xdr.Read())
{
myObjectId = xdr.ReadContentAsString();
}
xdr.Close();
}
messageCopy.Close();
ClaimSet claims = (myObjectId != null) ?
MapClaims(identity, myObjectId) : MapClaims(identity);
DefaultPrincipal principal = new DefaultPrincipal(identity, claims);