Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Quando si programmano i servizi Windows Communication Foundation (WCF), il contesto di sicurezza del servizio consente di determinare i dettagli sulle credenziali client e sulle attestazioni usate per l'autenticazione con il servizio. Questa operazione viene eseguita usando le proprietà della ServiceSecurityContext classe .
Ad esempio, è possibile recuperare l'identità del client corrente usando la proprietà PrimaryIdentity o WindowsIdentity. Per determinare se il client è anonimo, utilizzare la IsAnonymous proprietà .
È anche possibile determinare quali attestazioni vengono effettuate per conto del client, iterando la raccolta di attestazioni nella proprietà AuthorizationContext.
Per ottenere il contesto di sicurezza corrente
- Accedere alla proprietà Current statica per ottenere il contesto di sicurezza corrente. Esaminare una delle proprietà del contesto corrente dal riferimento.
Per determinare l'identità del chiamante
- Stampare il valore delle proprietà PrimaryIdentity e WindowsIdentity.
Per analizzare le attestazioni di un chiamante
Restituisce la classe corrente AuthorizationContext . Utilizzare la proprietà Current per restituire il contesto di sicurezza del servizio corrente, quindi restituire
AuthorizationContextutilizzando la proprietà AuthorizationContext.Analizzare la raccolta di ClaimSet oggetti restituiti dalla ClaimSets proprietà della AuthorizationContext classe .
Esempio
Nell'esempio seguente vengono stampati i valori delle proprietà WindowsIdentity e PrimaryIdentity del contesto di sicurezza corrente, la proprietà ClaimType, il valore della risorsa dell'attestazione, e la proprietà Right di ogni attestazione nel contesto di sicurezza corrente.
// Run this method from within a method protected by the PrincipalPermissionAttribute
// to see the security context data, including the primary identity.
public void WriteServiceSecurityContextData(string fileName)
{
using (StreamWriter sw = new StreamWriter(fileName))
{
// Write the primary identity and Windows identity. The primary identity is derived from
// the credentials used to authenticate the user. The Windows identity may be a null string.
sw.WriteLine("PrimaryIdentity: {0}", ServiceSecurityContext.Current.PrimaryIdentity.Name);
sw.WriteLine("WindowsIdentity: {0}", ServiceSecurityContext.Current.WindowsIdentity.Name);
sw.WriteLine();
// Write the claimsets in the authorization context. By default, there is only one claimset
// provided by the system.
foreach (ClaimSet claimset in ServiceSecurityContext.Current.AuthorizationContext.ClaimSets)
{
foreach (Claim claim in claimset)
{
// Write out each claim type, claim value, and the right. There are two
// possible values for the right: "identity" and "possessproperty".
sw.WriteLine("Claim Type = {0}", claim.ClaimType);
sw.WriteLine("\t Resource = {0}", claim.Resource.ToString());
sw.WriteLine("\t Right = {0}", claim.Right);
}
}
}
}
' Run this method from within a method protected by the PrincipalPermissionAttribute
' to see the security context data, including the primary identity.
Public Sub WriteServiceSecurityContextData(ByVal fileName As String)
Dim sw As New StreamWriter(fileName)
Try
' Write the primary identity and Windows identity. The primary identity is derived from
' the credentials used to authenticate the user. The Windows identity may be a null string.
sw.WriteLine("PrimaryIdentity: {0}", ServiceSecurityContext.Current.PrimaryIdentity.Name)
sw.WriteLine("WindowsIdentity: {0}", ServiceSecurityContext.Current.WindowsIdentity.Name)
sw.WriteLine()
' Write the claimsets in the authorization context. By default, there is only one claimset
' provided by the system.
Dim claimset As ClaimSet
For Each claimset In ServiceSecurityContext.Current.AuthorizationContext.ClaimSets
Dim claim As Claim
For Each claim In claimset
' Write out each claim type, claim value, and the right. There are two
' possible values for the right: "identity" and "possessproperty".
sw.WriteLine("Claim Type = {0}", claim.ClaimType)
sw.WriteLine(vbTab + " Resource = {0}", claim.Resource.ToString())
sw.WriteLine(vbTab + " Right = {0}", claim.Right)
Next claim
Next claimset
Finally
sw.Dispose()
End Try
End Sub
Compilazione del codice
Il codice usa i namespace seguenti: