Ich habe versucht, die föderierte Authentifizierung mit meiner bestehenden Asp.Net 3.5-Website zu integrieren, indem ich den Code http://www.wiktorzychla.com/2012/09/forms-authentication-revisited.html verwende. Das Problem ist fam.IsSignInResponse (request) gibt auch nach Erhalt einer gültigen Antwort von der STS (AD FS) falsch aus. GetClaims() ist leicht modifiziert, da es sich in einer separaten Klassenbibliothek befindet. Derselbe Code funktioniert in einer anderen Testanwendung. Ich bin mir nicht sicher, wo es schief geht, bitte hilf mir. Bitte beachten Sie den folgenden Code.STS-Antwort WSFederationAuthenticationModule IsSignInResponse ist immer falsch
public List<ClaimEntity> GetClaims()
{
logger.Info("Started executing GetClaims()");
List<ClaimEntity> claims = new List<ClaimEntity>();
// sam is configured in web.config
var sam = FederatedAuthentication.SessionAuthenticationModule;
logger.Info("Declaring sam");
// fam is not
var fam = new WSFederationAuthenticationModule();
logger.Info("Declaring fam");
//fam.FederationConfiguration = FederatedAuthentication.FederationConfiguration;
fam.ServiceConfiguration = FederatedAuthentication.ServiceConfiguration;
logger.Info("Assigning ServiceConfiguration to fam");
var request = thisContext.Request;
// is this the response from the STS
if (!fam.IsSignInResponse(request))
{
// no
logger.Info("fam.IsSignInResponse => No");
// the STS
fam.Issuer = _IssuerSTSSpec.Issuer;
logger.Info("IssuerUrl= " + _IssuerSTSSpec.Issuer);
// the return address
fam.Realm = thisContext.Request.Url.AbsoluteUri;
logger.Info("Assigning fam.Realm= " + thisContext.Request.Url.AbsoluteUri);
logger.Info("Creating SignInRequest...");
var req = fam.CreateSignInRequest(string.Empty, null, false);
logger.Info("Redirecting to the issuer...");
logger.Info("Request to STS: "+ req.WriteQueryString().ToString());
// go to STS
thisContext.Response.Redirect(req.WriteQueryString());
}
else
{
// yes
-----------
-----------
}
logger.Info("Returning the claims");
return claims;
}