AuthorizationContext 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
提供授權事件的內容資訊。 這包括代表呼叫端的主體、被要求的資源,以及正在執行的動作。
public ref class AuthorizationContext
public class AuthorizationContext
type AuthorizationContext = class
Public Class AuthorizationContext
- 繼承
-
AuthorizationContext
範例
本主題中使用的 AuthorizationContext 程式碼範例取自 Claims Based Authorization
範例。 此範例提供自訂宣告授權管理員,可根據組態中指定的原則來授權主體。 此自訂管理員包含三個基本元件:衍生自 ClaimsAuthorizationManager 的類別,該類別會實作管理員、 ResourceAction
配對資源與動作的類別,以及讀取和編譯組態檔中指定的原則讀取器。 宣告授權管理員接著可以使用此編譯的原則來評估主體,以授權存取資源。 並非所有專案都是為了簡潔起見而顯示。 如需適用于 WIF 的這個範例和其他範例的相關資訊,以及下載這些範例的位置,請參閱 WIF 程式碼範例索引。
下列程式碼顯示 CheckAccess 自訂宣告授權管理員的方法。 會根據 中所 AuthorizationContext 指定的資源和動作來評估主體的函式。 此函式會傳 true
回 或 false
,這會授與或拒絕對主體的存取。
static Dictionary<ResourceAction, Func<ClaimsPrincipal, bool>> _policies = new Dictionary<ResourceAction, Func<ClaimsPrincipal, bool>>();
PolicyReader _policyReader = new PolicyReader();
/// <summary>
/// Checks if the principal specified in the authorization context is authorized to perform action specified in the authorization context
/// on the specified resoure
/// </summary>
/// <param name="pec">Authorization context</param>
/// <returns>true if authorized, false otherwise</returns>
public override bool CheckAccess(AuthorizationContext pec)
{
//
// Evaluate the policy against the claims of the
// principal to determine access
//
bool access = false;
try
{
ResourceAction ra = new ResourceAction(pec.Resource.First<Claim>().Value, pec.Action.First<Claim>().Value);
access = _policies[ra](pec.Principal);
}
catch (Exception)
{
access = false;
}
return access;
}
}
下列 XML 顯示組態中指定的授權原則範例。 在第一個原則中,主體必須擁有其中一個指定的宣告,才能對指定的資源執行指定的動作。 在第二個原則中,主體必須擁有這兩個宣告,才能對指定的資源執行指定的動作。 在所有其他情況下,不論主體擁有的宣告為何,都會自動授與存取權。
<system.identityModel>
<identityConfiguration>
<claimsAuthorizationManager type="ClaimsAuthorizationLibrary.MyClaimsAuthorizationManager, ClaimsAuthorizationLibrary">
<policy resource="http://localhost:28491/Developers.aspx" action="GET">
<or>
<claim claimType="http://schemas.microsoft.com/ws/2008/06/identity/claims/role" claimValue="developer" />
<claim claimType="http://schemas.xmlsoap.org/claims/Group" claimValue="Administrator" />
</or>
</policy>
<policy resource="http://localhost:28491/Administrators.aspx" action="GET">
<and>
<claim claimType="http://schemas.xmlsoap.org/claims/Group" claimValue="Administrator" />
<claim claimType="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/country" claimValue="USA" />
</and>
</policy>
<policy resource="http://localhost:28491/Default.aspx" action="GET">
</policy>
<policy resource="http://localhost:28491/" action="GET">
</policy>
<policy resource="http://localhost:28491/Claims.aspx" action="GET">
</policy>
</claimsAuthorizationManager>
...
</identityConfiguration>
</system.identityModel>
備註
類別 AuthorizationContext 代表宣告授權管理員、類別實 ClaimsAuthorizationManager 作所使用的內容,以判斷主體 (主體) 是否應該獲得授權,以在指定的資源上執行指定的動作。 宣告授權管理員會評估 方法中的 CheckAccess 授權內容,並根據主體所提供的宣告拒絕或授與存取權。
屬性 Principal 包含要求授權的主體、 Resource 屬性包含要授權主體的資源,而 Action 屬性包含主體想要在資源上執行的動作。 資源和動作都會以宣告的集合表示;不過,在大部分情況下,每個集合都包含單一宣告。
建構函式
AuthorizationContext(ClaimsPrincipal, Collection<Claim>, Collection<Claim>) |
使用指定的主體、資源宣告和動作宣告,初始化 AuthorizationContext 類別的新執行個體。 |
AuthorizationContext(ClaimsPrincipal, String, String) |
使用指定的主體、資源名稱和動作名稱,初始化 AuthorizationContext 類別的新執行個體。 |
屬性
Action |
取得其主體要授權的動作。 |
Principal |
取得要求其授權的主體 (Principal) (主體) (Subject)。 |
Resource |
取得其主體要授權的資源。 |
方法
Equals(Object) |
判斷指定的物件是否等於目前的物件。 (繼承來源 Object) |
GetHashCode() |
做為預設雜湊函式。 (繼承來源 Object) |
GetType() |
取得目前執行個體的 Type。 (繼承來源 Object) |
MemberwiseClone() |
建立目前 Object 的淺層複製。 (繼承來源 Object) |
ToString() |
傳回代表目前物件的字串。 (繼承來源 Object) |