Ich habe IdentityServer3 für die Verwendung von ASP.NET Identity mit dem bereitgestellten Beispiel eingerichtet. Alles funktioniert lokal einwandfrei, ich kann über "/ admin" auf die Identity Manager-Benutzeroberfläche zugreifen und Benutzer / Rollen hinzufügen / entfernen.
Wenn ich es jedoch in Azure bereitstelle und versuche, darauf zuzugreifen, passiert nichts und ich komme zu einer URL, die folgendermaßen aussieht: https://IdentityServer3/admin/authorize?state=11373557769572288&client_id=idmgr&response_type=token
Es funktioniert lokal einwandfrei, unabhängig davon, ob ich eine lokale oder eine entfernte Datenbank (Azure SQL) verwende.
IdentityManager meldet sich beim ersten Zugriff automatisch beim lokalen Benutzer an. Ich vermute, es könnte ein Problem beim Zugriff auf einen Remote-Server sein.
Das von mir verwendete Beispiel ist hier: https://github.com/IdentityServer/IdentityServer3.Samples/tree/master/source/AspNetIdentity
Antworten:
2 für die Antwort № 1Ok, falls jemand anderes darüber stolpert, besteht die Lösung darin, die Sicherheitskonfiguration von IdentityManager in zu ändern HostSecurityConfiguration
und dann entweder:
Implementieren Sie manuell einen einfachen Authentifizierungsmechanismus wie den hier gezeigten: https://vimeo.com/125427106
oder
Konfigurieren Sie den IdentityManager wie alle anderen OIDC-Clients. Weitere Details hier: https://www.scottbrady91.com/ASPNET-Identity/Identity-Manager-using-ASPNET-Identity
All dies ist notwendig, da der IdentityManager standardmäßig verwendet LocalhostSecurityConfiguration
was nur die Authentifizierung über erlaubt localhost
.
Bei der zweiten Option sieht die Sicherheitskonfiguration von IdentityManager folgendermaßen aus:
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
}
});
Als Tipp, wenn Sie den IdentityManager ausführenStellen Sie in derselben Webanwendung wie der IdentityServer selbst sicher, dass Sie die IdentityManager-Authentifizierungslogik nach der IdentityServer-Zuordnung und vor der IdentityManager-Zuordnung platzieren:
app.Map("/identity", idsrvApp =>
//this sets IdentityManager to use IdentityServer as Idp
ConfigureIdentityManagerAuthentication(app);
app.Map("/manager", managerApp =>
Wenn Sie es vor den IdentityServern platzierendann wird ein zusätzlicher externer "OpenId" -Provider auf der IdentityServer-Anmeldeseite angezeigt. Wenn Sie es hinter die IdentityManager-Map setzen, funktioniert die Authentifizierung nicht.