using System; using System.IdentityModel.Claims; using System.IdentityModel.Policy; using System.Security.Principal; namespace Taloyhtio.GeneralSSO.Server.CodeFiles.Infrastructure.WCF { public class OAuthPrincipalAuthorizationPolicy : IAuthorizationPolicy { private readonly Guid uniqueId = Guid.NewGuid(); private readonly IPrincipal principal; public OAuthPrincipalAuthorizationPolicy(IPrincipal principal) { this.principal = principal; } public string Id { get { return this.uniqueId.ToString(); } } public ClaimSet Issuer { get { return ClaimSet.System; } } public bool Evaluate(EvaluationContext evaluationContext, ref object state) { evaluationContext.AddClaimSet(this, new DefaultClaimSet(Claim.CreateNameClaim(this.principal.Identity.Name))); evaluationContext.Properties["Principal"] = this.principal; return true; } } }