Я пытаюсь настроить Azure в качестве поставщика удостоверений для федеративного входа в систему с нашим приложением. Кажется, это должно быть достаточно просто и все же ...
код:
private void ConfigureSAML2()
{
Microsoft.IdentityModel.Logging.IdentityModelEventSource.ShowPII = true;
App.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);
App.UseCookieAuthentication(new CookieAuthenticationOptions());
App.UseWsFederationAuthentication(
new WsFederationAuthenticationOptions
{
Wtrealm = "75d8479b-5530-4e93-a685-fc0d6847c453",
MetadataAddress = "https://login.microsoftonline.com/17ea2b4e-7ce9-4eb4-9d1a-6d7da51f1421/federationmetadata/2007-06/federationmetadata.xml",
Notifications = new WsFederationAuthenticationNotifications
{
AuthenticationFailed = context =>
{
context.HandleResponse();
context.Response.Redirect(ConfigurationService.BaseURL + "#/authentication?failed=true&message=" + context.Exception.Message);
return Task.FromResult(0);
}
}
});
}
К сожалению, он продолжает вызывать ошибку с Exception.Message = "IDX10501: проверка подписи не удалась. Невозможно сопоставить ключи: kid: 'Microsoft.IdentityModel.Xml.KeyInfo', токен: 'Microsoft.IdentityModel.Tokens.Saml2.Saml2SecurityToken »«. и Exception.StackTrace =
в Microsoft.IdentityModel.Tokens.Saml2.Saml2SecurityTokenHandler.ValidateSignature (строковый токен, TokenValidationParameters validationParameters)
в Microsoft.IdentityModel.Tokens.Saml2.Saml2SecurityTokenHandler.ValidateToken (строковый токен, TokenValidationParameters validationParameters, SecurityToken & validatedToken)
в Microsoft.Owin.Security.WsFederation.WsFederationAuthenticationHandler.d__8.MoveNext ()
Странно, когда я вижу, что Azure посылает мне, утверждения выглядят вполне законно. Я могу видеть свое имя, фамилию, адрес электронной почты и т. Д. В целости и сохранности. Я испытываю желание разбить и взять то, что мне нужно, из ответа, но я бы предпочел, чтобы промежуточное программное обеспечение работало правильно.
Я думал, что мое значение Wtrealm выглядит странно, но это единственный способ, которым Azure знает, о чем я говорю. У меня проблемы с поиском множества примеров WS-Federation с Azure. К сожалению, OpenId Connect не подходит для нас (кстати, у нас это уже работало).