2014-04-21 3 views
3

microsoft.identityModel 구성에 포함 된 다음 구성을 프로그래밍 방식으로 생성하려고합니다.asp.net 응용 프로그램에서 microsoft.identityModel의 federatedAuthentication 요소를 프로그래밍 방식으로 구성하는 방법

<federatedAuthentication> 
    <wsFederation passiveRedirectEnabled="false" requireHttps="true" issuer="https://IssuedByFoo.com" realm="http://Foo.com/" /> 
    <cookieHandler requireSsl="true" path="/" /> 
</federatedAuthentication> 

지금까지 성공적으로 구성 할 수 없었습니다. application_Start에서 다음 설정을 시도했지만 페더레이션을 시도 할 때 오류 메시지가 나타납니다.

"ID5002 : FederatedPassiveSignIn 컨트롤의 Issuer 속성은 WS-Federation 수동을 처리 할 수있는 STS 끝점의 주소로 설정해야합니다. 프로토콜 메시지. "

FederatedAuthentication.WSFederationAuthenticationModule.Realm = "http://Foo.com/"; 
FederatedAuthentication.WSFederationAuthenticationModule.Issuer = "https://IssuedByFoo.com"; 
FederatedAuthentication.WSFederationAuthenticationModule.PassiveRedirectEnabled = false; 
FederatedAuthentication.WSFederationAuthenticationModule.RequireHttps = true; 
FederatedAuthentication.SessionAuthenticationModule.CookieHandler.RequireSsl = true; 
FederatedAuthentication.SessionAuthenticationModule.CookieHandler.Path = "/"; 

는 내가 제대로 FederatedAuthentication를 구성하지 오전 확신, 나는 제대로 구성 할 경우 확실하지 않다. 한가지 주목할 점은 요청 시작시 중단 점을 설정하고 FederatedAuthentication.WSFederationAuthenticationModule을 검사하면 값이 web.config에 없을 때 속성이 표시되지 않는다는 것입니다.

답변

1

Is it possible to get ACS claims without editing web.config?

이 작동하는 것 같다, 그리고 그것을 구현하기가 쉽고, 그래서 우리는 이미 사용자 정의 모듈을 usign했다

난 항상 코드로부터 내 모든 WIF 설정을 관리하고, 단지에 대한 응용 프로그램 설정을 사용
+0

후속 조치 주셔서 감사합니다. 매우 도움이되는 링크 – EvilDr

6

RP 및 STS 서버 이름 등 이 설정이 효과가 있습니다. btw - 의존 당사자를위한 설정입니다 (sts 설정이 간단합니다.)

protected void Application_Start() 
    { 

     FederatedAuthentication.FederationConfigurationCreated += FederatedAuthentication_FederationConfigurationCreated; 

     } 

     private static void FederatedAuthentication_FederationConfigurationCreated(object sender, FederationConfigurationCreatedEventArgs e) 
    { 
     //from appsettings... 
     const string allowedAudience = "http://audience1/user/get"; 
     const string rpRealm = "http://audience1/"; 
     const string domain = ""; 
     const bool requireSsl = false; 
     const string issuer = "http://sts/token/create; 
     const string certThumbprint = "mythumbprint"; 
     const string authCookieName = "StsAuth"; 

     var federationConfiguration = new FederationConfiguration(); 
           federationConfiguration.IdentityConfiguration.AudienceRestriction.AllowedAudienceUris.Add(new Uri(allowedAudience)); 

     var issuingAuthority = new IssuingAuthority(internalSts); 
     issuingAuthority.Thumbprints.Add(certThumbprint); 
     issuingAuthority.Issuers.Add(internalSts); 
     var issuingAuthorities = new List<IssuingAuthority> {issuingAuthority}; 

     var validatingIssuerNameRegistry = new ValidatingIssuerNameRegistry {IssuingAuthorities = issuingAuthorities}; 
     federationConfiguration.IdentityConfiguration.IssuerNameRegistry = validatingIssuerNameRegistry; 
     federationConfiguration.IdentityConfiguration.CertificateValidationMode = X509CertificateValidationMode.None; 

     var chunkedCookieHandler = new ChunkedCookieHandler {RequireSsl = false, Name = authCookieName, Domain = domain, PersistentSessionLifetime = new TimeSpan(0, 0, 30, 0)}; 
     federationConfiguration.CookieHandler = chunkedCookieHandler; 
     federationConfiguration.WsFederationConfiguration.Issuer = issuer; 
     federationConfiguration.WsFederationConfiguration.Realm = rpRealm; 
     federationConfiguration.WsFederationConfiguration.RequireHttps = requireSsl; 

     e.FederationConfiguration = federationConfiguration; 
+1

작동에 필요한 어떤 어셈블리가 사용에 포함 되나요? – LaPuyaLoca