Identity Server 3 numaralı merkezi kimlik doğrulama sunucusu için oluşturduğum .Net MVC web uygulamasında kullanıyorum.Azure AD fedeli oturum kapatma istemci uygulamasına yönlendirmiyor
Kullanıcıların Hybrid akışını kullanarak çok kiracılı bir Azure Active Directory hesabına kimlik doğrulaması yapabilmelerini sağlamak için kimlik doğrulama sunucusunu Open ID Connect
kimlik sağlayıcısını kullanacak şekilde yapılandırdım.
Şu anda, istemci uygulamamda doğru şekilde doldurulmuş bir Access Token ile istemci uygulamanıza geri dönmeden önce oturum açmak için Microsoft'a yönlendiren kimlik doğrulama sunucusuna yeniden yönlendiren istemci uygulamasında beklendiği gibi oturum açma çalışmaları.
Ancak, çıkış yapmayı denediğimde Microsoft'a doğru şekilde yeniden yönlendirilirim, ancak istemci uygulamasına geri dönmek yerine kimlik doğrulama sunucusuna geri döndüğünde sayfa durur.
Postout yönlendirme yönergelerini doğru olarak belirtildiği gibi here ve düşünün tüm ayarlarımın tamam olduğunu düşünüyorum.
Ben Kimlik Sunucusu 3 aşağı kodu ve, doğru sorgu dizesi üzerine signOutMessageId
kuruyor hata ayıklama çekin, ama benim eşlenen signoutcallback
yere yönlendirmek için çalışıyor UseAutofacMiddleware
yöntemi içinde aşağıdaki hatayı çarptığında:
Ek bilgiler:
gönderilenMy Kimlik Doğrulama Sunucusu kurulumu:özel durum Başlıkları zaten
app.Map("identity", idsrvApp => {
var idSvrFactory = new IdentityServerServiceFactory();
var options = new IdentityServerOptions
{
SiteName = "Site Name",
SigningCertificate = <Certificate>,
Factory = idSvrFactory,
AuthenticationOptions = new AuthenticationOptions
{
IdentityProviders = ConfigureIdentityProviders,
EnablePostSignOutAutoRedirect = true,
PostSignOutAutoRedirectDelay = 3
}
};
idsrvApp.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);
idsrvApp.UseIdentityServer(options);
idsrvApp.Map("/signoutcallback", cb => {
cb.Run(async ctx => {
var state = ctx.Request.Cookies["state"];
ctx.Response.Cookies.Append("state", ".", new Microsoft.Owin.CookieOptions { Expires = DateTime.UtcNow.AddYears(-1) });
await ctx.Environment.RenderLoggedOutViewAsync(state);
});
});
});
My Açık Kimliği Connect kurulum Azure AD bağlanmak için:
app.UseOpenIdConnectAuthentication(
new OpenIdConnectAuthenticationOptions
{
AuthenticationType = "aad",
SignInAsAuthenticationType = signInAsType,
Authority = "https://login.microsoftonline.com/common/",
ClientId = <Client ID>,
AuthenticationMode = AuthenticationMode.Active,
TokenValidationParameters = new TokenValidationParameters
{
AuthenticationType = Constants.ExternalAuthenticationType,
ValidateIssuer = false,
},
Notifications = new OpenIdConnectAuthenticationNotifications()
{
AuthorizationCodeReceived = (context) =>
{
var code = context.Code;
ClientCredential credential = new ClientCredential(<Client ID>, <Client Secret>);
string tenantId = context.AuthenticationTicket.Identity.FindFirst("tid").Value;
AuthenticationContext authContext = new AuthenticationContext($"https://login.microsoftonline.com/{tenantId}");
AuthenticationResult result = authContext.AcquireTokenByAuthorizationCode(
code, new Uri(<Identity Server URI>/aad/"), credential, "https://graph.windows.net");
return Task.FromResult(0);
},
RedirectToIdentityProvider = (context) =>
{
string appBaseUrl = context.Request.Scheme + "://" + context.Request.Host + context.Request.PathBase;
context.ProtocolMessage.RedirectUri = appBaseUrl + "/aad/";
context.ProtocolMessage.PostLogoutRedirectUri = appBaseUrl + "/signoutcallback";
if (context.ProtocolMessage.RequestType == Microsoft.IdentityModel.Protocols.OpenIdConnectRequestType.LogoutRequest)
{
var signOutMessageId = context.OwinContext.Environment.GetSignOutMessageId();
if (signOutMessageId != null)
{
context.OwinContext.Response.Cookies.Append("state", signOutMessageId);
}
}
return Task.FromResult(0);
}
});
Ben bu soruna nedenine veya çözümü hakkında herhangi bir bilgi bulamıyorum. İstemcim uygulamasına doğru bir şekilde yeniden yönlendirmek için bunu nasıl yapılandırabilirim?
Düzenleme: GitHub üzerinde
İlgili tartışma: https://github.com/IdentityServer/IdentityServer3/issues/2657
Ben de aynı sorunla MyGet (v2.4.1-build00452) Kimlik Server son sürümü ile bu çalıştılar.
Ben de burada benim için sorun yeniden üreten bir depo oluşturduk: https://github.com/Steve887/IdentityServer-Azure/Benim Azure AD kurulumu:
Bu özellik hakkında - https://github.com/IdentityServer/IdentityServer3/issues/1000 adresinde bir tartışma yapıldı. Bunun size yardımcı olup olmadığından emin değilim. IdServ3 günlüklerinde bir şey var mı? – Karthik
@Karthik Tartışmanın ilk sırada 'GetSignOutMessage' yönteminin uygulanmasına yol açtığına inanıyorum. Ve hayır, görebileceğim günlüklerde hiçbir şey yok. – Steve