/ / ASP.NET плъгин за идентичност UI (IdentityManager) за IdentityServer3 не работи след внедряване в Azure (WebApp) - c #, asp.net, azure, asp.net-identity, identityserver

ASP.NET идентификационен плъгин UI (IdentityManager) за IdentityServer3 не работи след внедряването в Azure (WebApp) - c #, asp.net, azure, asp.net-identity, identityserver3

Настройвам IdentityServer3, за да използвам ASP.NET Identity, използвайки предоставената проба. Всичко работи добре на местно ниво, мога да вляза в потребителския интерфейс на Identity Manager чрез "/ admin" и да добавя / премахва потребители / роли.

Въпреки това, когато го разположим в Azure и се опитам да го намеря, нищо не се случва и ме води до URL адрес, който изглежда така: https://IdentityServer3/admin/authorize?state=11373557769572288&client_id=idmgr&response_type=token

Той работи добре локално, независимо дали използвам локална или отдалечена (Azure SQL) база данни.

IdentityManager автоматично влиза в локалния потребител при първия достъп, за който подозирам, че може да е проблем при достъп до отдалечен сървър, но не съм сигурен как да го променям.

Използваната мостра е тук: https://github.com/IdentityServer/IdentityServer3.Samples/tree/master/source/AspNetIdentity

Отговори:

2 за отговор № 1

Добре, в случай, че някой друг се натъкне на това, решението е да промените SecurityConfiguration на IdentityManager HostSecurityConfiguration и след това:

  1. Ръчно въвеждане на прост механизъм за удостоверяване като този, показан тук: https://vimeo.com/125427106

    или

  2. Конфигурирайте IdentityManager като всеки друг OIDC клиент. Повече подробности тук: https://www.scottbrady91.com/ASPNET-Identity/Identity-Manager-using-ASPNET-Identity

Всичко по-горе е необходимо, защото по подразбиране IdentityManager използва LocalhostSecurityConfiguration което позволява само удостоверяване чрез localhost.

За втората опция SecurityConfiguration на IdentityManager ще изглежда така:

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
}
});

Като съвет, ако използвате IdentityManagerв същото уеб приложение, както и самият IdentityServer, след това се уверете, че сте поставили идентификационната логика на IdentityManager след картографирането на IdentityServer и преди картографирането на IdentityManager:

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

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

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

Ако го поставите преди идентификационния сървърслед това ще видите допълнителен външен доставчик "OpenId" в страницата за вход в IdentityServer. Ако го сложите след картата на IdentityManager, тогава удостоверяването няма да работи.