/ / ASP.NET Identity plugin UI (IdentityManager) dla IdentityServer3 nie działa po wdrożeniu na platformie Azure (WebApp) - c #, asp.net, azure, asp.net-identity, identserver3

Identyfikator wtyczki ASP.NET Identity (IdentityManager) dla IdentityServer3 nie działa po wdrożeniu na platformie Azure (WebApp) - c #, asp.net, azure, asp.net-identity, identityserver3

Skonfigurowałem IdentityServer3 do korzystania z tożsamości ASP.NET przy użyciu dostarczonej próbki. Wszystko działa lokalnie dobrze, mogę uzyskać dostęp do interfejsu użytkownika Identity Manager poprzez „/ admin” i mogę dodawać / usuwać użytkowników / role.

Jednak po wdrożeniu go na platformie Azure i próbie uzyskania dostępu do niego nic się nie dzieje i nie prowadzi mnie do adresu URL, który wygląda następująco: https://IdentityServer3/admin/authorize?state=11373557769572288&client_id=idmgr&response_type=token

Działa dobrze lokalnie, niezależnie od tego, czy korzystam z lokalnej, czy zdalnej bazy danych (Azure SQL).

IdentityManager automatycznie loguje się do lokalnego użytkownika przy pierwszym dostępie, co, jak podejrzewam, może być problemem podczas uzyskiwania dostępu do zdalnego serwera, ale nie jestem pewien, jak to dostosować / zmienić.

Próbka, której użyłem, jest tutaj: https://github.com/IdentityServer/IdentityServer3.Samples/tree/master/source/AspNetIdentity

Odpowiedzi:

2 dla odpowiedzi № 1

Ok, na wypadek, gdyby ktoś natknął się na to, rozwiązaniem jest zmiana SecurityConfiguration IdentityManager na HostSecurityConfiguration a następnie albo:

  1. Ręcznie zaimplementuj prosty mechanizm uwierzytelniania, taki jak ten pokazany tutaj: https://vimeo.com/125427106

    lub

  2. Skonfiguruj IdentityManager jak każdy inny klient OIDC. Więcej informacji tutaj: https://www.scottbrady91.com/ASPNET-Identity/Identity-Manager-using-ASPNET-Identity

Wszystkie powyższe są konieczne, ponieważ domyślnie używa IdentityManager LocalhostSecurityConfiguration który pozwala tylko na uwierzytelnianie za pośrednictwem localhost.

W przypadku drugiej opcji, SecurityConfiguration IdentityManager będzie wyglądać następująco:

managerApp.UseIdentityManager(new IdentityManagerOptions()
{
SecurityConfiguration = new HostSecurityConfiguration
{
HostAuthenticationType = "cookies",
AdditionalSignOutType = "oidc",
NameClaimType = Constants.ClaimTypes.Name,
RoleClaimType = Constants.ClaimTypes.Role,
AdminRoleName = "IdentityManagerAdministrator" //default role name for IdentityManager
}
});

Wskazówka: jeśli uruchamiasz IdentityManagerw tej samej aplikacji internetowej, co sam IdentityServer, a następnie upewnij się, że umieściłeś logikę uwierzytelniania IdentityManager po odwzorowaniu IdentityServer i przed odwzorowaniem IdentityManager:

app.Map("/identity", idsrvApp =>

//this sets IdentityManager to use IdentityServer as Idp
ConfigureIdentityManagerAuthentication(app);

app.Map("/manager", managerApp =>

Jeśli umieścisz go przed IdentityServermapowanie, wtedy zobaczysz dodatkowego zewnętrznego dostawcę „OpenId” na stronie logowania IdentityServer. Jeśli umieścisz go po mapie IdentityManager, uwierzytelnianie nie będzie działać.