Настройвам 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
и след това:
Ръчно въвеждане на прост механизъм за удостоверяване като този, показан тук: https://vimeo.com/125427106
или
Конфигурирайте 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, тогава удостоверяването няма да работи.