UserNameSecurityTokenAuthenticator Sınıf
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Güvenlik belirtecinin UserNameSecurityToken kimliğini doğrular.
public ref class UserNameSecurityTokenAuthenticator abstract : System::IdentityModel::Selectors::SecurityTokenAuthenticator
public abstract class UserNameSecurityTokenAuthenticator : System.IdentityModel.Selectors.SecurityTokenAuthenticator
type UserNameSecurityTokenAuthenticator = class
inherit SecurityTokenAuthenticator
Public MustInherit Class UserNameSecurityTokenAuthenticator
Inherits SecurityTokenAuthenticator
- Devralma
- Türetilmiş
Örnekler
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Text;
using System.IdentityModel.Claims;
using System.IdentityModel.Policy;
using System.IdentityModel.Selectors;
using System.IdentityModel.Tokens;
using System.Security.Principal;
using System.ServiceModel.Security;
using System.Text.RegularExpressions;
namespace Microsoft.ServiceModel.Samples
{
class MyTokenAuthenticator : UserNameSecurityTokenAuthenticator
{
static bool IsRogueDomain(string domain)
{
return false;
}
static bool IsEmail(string inputEmail)
{
string strRegex = @"^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}" +
@"\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\" +
@".)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$";
Regex re = new Regex(strRegex);
if (re.IsMatch(inputEmail))
return (true);
else
return (false);
}
bool ValidateUserNameFormat(string UserName)
{
if (!IsEmail(UserName))
{
Console.WriteLine("Not a valid email");
return false;
}
string[] emailAddress = UserName.Split('@');
string user = emailAddress[0];
string domain = emailAddress[1];
if (IsRogueDomain(domain))
return false;
return true;
}
protected override ReadOnlyCollection<IAuthorizationPolicy> ValidateUserNamePasswordCore(string userName, string password)
{
if (!ValidateUserNameFormat(userName))
throw new SecurityTokenValidationException("Incorrect UserName format");
ClaimSet claimSet = new DefaultClaimSet(ClaimSet.System, new Claim(ClaimTypes.Name, userName, Rights.PossessProperty));
List<IIdentity> identities = new List<IIdentity>(1);
identities.Add(new GenericIdentity(userName));
List<IAuthorizationPolicy> policies = new List<IAuthorizationPolicy>(1);
policies.Add(new UnconditionalPolicy(ClaimSet.System, claimSet, DateTime.MaxValue.ToUniversalTime(), identities));
return policies.AsReadOnly();
}
}
class UnconditionalPolicy : IAuthorizationPolicy
{
string id = Guid.NewGuid().ToString();
ClaimSet issuer;
ClaimSet issuance;
DateTime expirationTime;
IList<IIdentity> identities;
public UnconditionalPolicy(ClaimSet issuer, ClaimSet issuance, DateTime expirationTime, IList<IIdentity> identities)
{
if (issuer == null)
throw new ArgumentNullException("issuer");
if (issuance == null)
throw new ArgumentNullException("issuance");
this.issuer = issuer;
this.issuance = issuance;
this.identities = identities;
this.expirationTime = expirationTime;
}
public string Id
{
get { return this.id; }
}
public ClaimSet Issuer
{
get { return this.issuer; }
}
public DateTime ExpirationTime
{
get { return this.expirationTime; }
}
public bool Evaluate(EvaluationContext evaluationContext, ref object state)
{
evaluationContext.AddClaimSet(this, this.issuance);
if (this.identities != null)
{
object value;
IList<IIdentity> contextIdentities;
if (!evaluationContext.Properties.TryGetValue("Identities", out value))
{
contextIdentities = new List<IIdentity>(this.identities.Count);
evaluationContext.Properties.Add("Identities", contextIdentities);
}
else
{
contextIdentities = value as IList<IIdentity>;
}
foreach (IIdentity identity in this.identities)
{
contextIdentities.Add(identity);
}
}
evaluationContext.RecordExpirationTime(this.expirationTime);
return true;
}
}
}
Imports System.Collections.Generic
Imports System.Collections.ObjectModel
Imports System.Text
Imports System.IdentityModel.Claims
Imports System.IdentityModel.Policy
Imports System.IdentityModel.Selectors
Imports System.IdentityModel.Tokens
Imports System.Security.Principal
Imports System.ServiceModel.Security
Imports System.Text.RegularExpressions
Class MyTokenAuthenticator
Inherits UserNameSecurityTokenAuthenticator
Shared Function IsRogueDomain(ByVal domain As String) As Boolean
Return False
End Function 'IsRogueDomain
Shared Function IsEmail(ByVal inputEmail As String) As Boolean
Dim strRegex As String = "^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}" + "\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\" + ".)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$"
Dim re As New Regex(strRegex)
If re.IsMatch(inputEmail) Then
Return True
Else
Return False
End If
End Function 'IsEmail
Function ValidateUserNameFormat(ByVal UserName As String) As Boolean
If Not IsEmail(UserName) Then
Console.WriteLine("Not a valid email")
Return False
End If
Dim emailAddress As String() = UserName.Split("@"c)
Dim user As String = emailAddress(0)
Dim domain As String = emailAddress(1)
If IsRogueDomain(domain) Then
Return False
End If
Return True
End Function
Protected Overrides Function ValidateUserNamePasswordCore(ByVal userName As String, ByVal password As String) As ReadOnlyCollection(Of IAuthorizationPolicy)
If Not ValidateUserNameFormat(userName) Then
Throw New SecurityTokenValidationException("Incorrect UserName format")
End If
Dim setOfClaims As New DefaultClaimSet(ClaimSet.System, New Claim(ClaimTypes.Name, userName, Rights.PossessProperty))
Dim identities As New List(Of IIdentity)(1)
identities.Add(New GenericIdentity(userName))
Dim policies As New List(Of IAuthorizationPolicy)(1)
policies.Add(New UnconditionalPolicy(ClaimSet.System, setOfClaims, DateTime.MaxValue.ToUniversalTime(), identities))
Return policies.AsReadOnly()
End Function 'New
End Class
Class UnconditionalPolicy
Implements IAuthorizationPolicy
Private idValue As String = Guid.NewGuid().ToString()
Private issuerValue As ClaimSet
Private issuance As ClaimSet
Private expirationTimeValue As DateTime
Private identities As IList(Of IIdentity)
Public Sub New(ByVal issuer As ClaimSet, ByVal issuance As ClaimSet, ByVal expirationTime As DateTime, ByVal identities As IList(Of IIdentity))
If issuer Is Nothing Then
Throw New ArgumentNullException("issuer")
End If
If issuance Is Nothing Then
Throw New ArgumentNullException("issuance")
End If
Me.issuerValue = issuer
Me.issuance = issuance
Me.identities = identities
Me.expirationTimeValue = expirationTime
End Sub
Public ReadOnly Property Id() As String Implements IAuthorizationPolicy.Id
Get
Return Me.idValue
End Get
End Property
Public ReadOnly Property Issuer() As ClaimSet Implements IAuthorizationPolicy.Issuer
Get
Return Me.issuerValue
End Get
End Property
Public ReadOnly Property ExpirationTime() As DateTime
Get
Return Me.expirationTimeValue
End Get
End Property
Public Function Evaluate(ByVal evalContext As evaluationContext, ByRef state As Object) As Boolean Implements IAuthorizationPolicy.Evaluate
evalContext.AddClaimSet(Me, Me.issuance)
If Not (Me.identities Is Nothing) Then
Dim value As Object = Nothing
Dim contextIdentities As IList(Of IIdentity)
If Not evalContext.Properties.TryGetValue("Identities", value) Then
contextIdentities = New List(Of IIdentity)(Me.identities.Count) '
evalContext.Properties.Add("Identities", contextIdentities)
Else
contextIdentities = CType(value, IList(Of IIdentity))
End If
Dim identity As IIdentity
For Each identity In Me.identities
contextIdentities.Add(identity)
Next identity
End If
evalContext.RecordExpirationTime(Me.expirationTimeValue)
Return True
End Function
End Class
Açıklamalar
UserNameSecurityTokenAuthenticator Güvenlik belirteçlerinin kimliğini kullanıcı adı ve parolaya göre doğrulamak için sınıfını geçersiz kılın.
Windows Communication Foundation, güvenlik belirteçlerinin kimliğini doğrulama UserNameSecurityToken desteği sağlayan aşağıdaki sınıflarla birlikte gelir.
Tür | Description |
---|---|
CustomUserNameSecurityTokenAuthenticator | Bir uygulamanın kullanıcı adları ve parolalar için özel bir kimlik doğrulama düzeni sağlamasına izin verir. Kimlik doğrulama düzeni, sınıfından UserNamePasswordValidator türetilen bir sınıf kullanılarak sağlanır. |
WindowsUserNameSecurityTokenAuthenticator | Kullanıcı adı ve parolanın kimliğini windows hesabı olarak doğrular. |
Çoğu özel kimlik doğrulama düzeni sınıfını CustomUserNameSecurityTokenAuthenticator kullanabilir ve sınıfından UserNamePasswordValidator türetilen bir sınıf uygulayabilir. Ancak, ek esneklik gerekiyorsa sınıfından UserNameSecurityTokenAuthenticator bir sınıf türetebilir ve yöntemini geçersiz kılabilirsiniz ValidateUserNamePasswordCore .
Oluşturucular
UserNameSecurityTokenAuthenticator() |
UserNameSecurityTokenAuthenticator sınıfının yeni bir örneğini başlatır. |
Yöntemler
CanValidateToken(SecurityToken) |
Belirtilen güvenlik belirtecinin bu güvenlik belirteci doğrulayıcı tarafından doğrulanıp doğrulanamayacağını belirten bir değer alır. (Devralındığı yer: SecurityTokenAuthenticator) |
CanValidateTokenCore(SecurityToken) |
Belirtilen güvenlik belirtecinin bu güvenlik belirteci doğrulayıcı tarafından doğrulanıp doğrulanamayacağını belirten bir değer alır. |
Equals(Object) |
Belirtilen nesnenin geçerli nesneye eşit olup olmadığını belirler. (Devralındığı yer: Object) |
GetHashCode() |
Varsayılan karma işlevi işlevi görür. (Devralındığı yer: Object) |
GetType() |
Type Geçerli örneğini alır. (Devralındığı yer: Object) |
MemberwiseClone() |
Geçerli Objectöğesinin sığ bir kopyasını oluşturur. (Devralındığı yer: Object) |
ToString() |
Geçerli nesneyi temsil eden dizeyi döndürür. (Devralındığı yer: Object) |
ValidateToken(SecurityToken) |
Belirtilen güvenlik belirtecinin kimliğini doğrular ve güvenlik belirteci için yetkilendirme ilkeleri kümesini döndürür. (Devralındığı yer: SecurityTokenAuthenticator) |
ValidateTokenCore(SecurityToken) |
Belirtilen güvenlik belirtecinin kimliğini doğrular ve güvenlik belirteci için yetkilendirme ilkeleri kümesini döndürür. |
ValidateUserNamePasswordCore(String, String) |
Türetilmiş bir sınıfta geçersiz kılındığında, belirtilen kullanıcı adı ve parolanın kimliğini doğrular ve güvenlik belirteçleri için UserNameSecurityToken yetkilendirme ilkeleri kümesini döndürür. |