2016-11-21 16 views
5

Tôi đang cố gắng thêm phương thức xác thực mới với Azure ACS để hỗ trợ người dùng từ ADFS nhưng tôi gặp sự cố rất cụ thể.Xác thực liên kết Ws trong MVC không lưu thông tin xác nhận sau khi xác minh SAML2.0

Tôi có thể xác nhận các SAML2.0 với cấu hình sau:

var audienceRestriction = new AudienceRestriction(AudienceUriMode.Never); 
var issuerRegistry = new ConfigurationBasedIssuerNameRegistry(); 
issuerRegistry.AddTrustedIssuer("XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", "https://XXXX.accesscontrol.windows.net/"); 
app.UseWsFederationAuthentication(new WsFederationAuthenticationOptions 
{ 
    MetadataAddress = "https://XXXXX.accesscontrol.windows.net/federationmetadata/2007-06/federationmetadata.xml", 
    Wtrealm = "http://someurl/", 
    SecurityTokenHandlers = new SecurityTokenHandlerCollection 
    { 
     new EncryptedSecurityTokenHandlerEx(new X509CertificateStoreTokenResolver(StoreName.My,StoreLocation.LocalMachine)), 
     new SamlSecurityTokenHandlerEx 
     { 
      CertificateValidator = X509CertificateValidator.None, 
      Configuration = new SecurityTokenHandlerConfiguration() 
      { 
       IssuerNameRegistry = issuerRegistry, 
       AudienceRestriction = audienceRestriction 
      } 
     } 
    }, 
}); 

Với bộ xử lý thực hiện như thế này:

public class SamlSecurityTokenHandlerEx : Saml2SecurityTokenHandler, ISecurityTokenValidator 
{ 
    public override bool CanReadToken(string securityToken) 
    { 
     return base.CanReadToken(XmlReader.Create(new StringReader(securityToken))); 
    } 

    public ClaimsPrincipal ValidateToken(string securityToken, TokenValidationParameters validationParameters, 
     out SecurityToken validatedToken) 
    { 
     validatedToken = ReadToken(new XmlTextReader(new StringReader(securityToken)), Configuration.ServiceTokenResolver); 
     var claims = new ClaimsPrincipal(ValidateToken(validatedToken)); 

     return claims; 
    } 

    public int MaximumTokenSizeInBytes { get; set; } 
} 

Nếu tôi kiểm tra những tuyên bố trong ValidateToken nó là xác thực và với các tuyên bố tôi muốn nhưng sau khi nó gọi trang gọi lại (nơi tôi muốn tạo một đăng nhập thích hợp mới cho webapp) Nó không còn bất kỳ thông tin nào về auth Liên kết.

Trả lời

Các vấn đề liên quan