gpt4 book ai didi

c# - 如何将 Identity Server 与 .NET Core 2.1 一起使用?

转载 作者:太空宇宙 更新时间:2023-11-03 18:53:16 24 4
gpt4 key购买 nike

我正在尝试让 Identity Server 在 ASP.NET Core 2.1 项目上运行,并且我已按照说明进行操作 here ,但是,我意识到这些是针对 ASP.NET Core 2.0 的。

MVC 客户端中的 Startup 如下所示:

services.AddAuthentication(options =>
{
options.DefaultScheme = "Cookies";
options.DefaultChallengeScheme = "oidc";
})
.AddCookie("Cookies")
.AddOpenIdConnect("oidc", options =>
{
options.SignInScheme = "Cookies";
options.Authority = "http://localhost:5000";
options.RequireHttpsMetadata = false;
options.ClientId = "mvc";
options.ClientSecret = "secret";
options.ResponseType = "code id_token";
options.SaveTokens = true;
options.GetClaimsFromUserInfoEndpoint = true;
options.Scope.Add("api1");
options.Scope.Add("offline_access");
});

使用 ASP.NET Core 2.1,可以在此处访问身份组件:http://localhost/Identity/Account/Login。上面的代码重定向到:http://localhost/Account/Login。我的第一个想法是替换以下行:

options.Authority = "http://localhost:5000";

与:

options.Authority = "http://localhost:5000/Identity";

但是,我收到一条错误消息:

IOException: IDX10804: Unable to retrieve document from: 'http://localhost:5000/Identity/.well-known/openid-configuration'.".

这是因为路径需要是:' http://localhost:5000/.well-known/openid-configuration '.

我可以用路由来解决这个问题吗?我相信如果我确保所有对 http://localhost:5000/Account/Login 的请求都映射到 http://localhost:5000/Identity/Account/Login ,然后它将解决问题。这是正确的吗?路线是什么样的?我无法获得使用区域(身份)的路线。

最佳答案

当您使用 OpenID Connect 时,您没有网络应用程序上的登录表单。您将登录责任委托(delegate)给 OpenID Connect 提供商。在您的情况下,这是在单独的应用程序中运行的 IdentityServer。

因此,您需要在此处配置的不是您的 Web 应用程序:授权您的 IdentityServer 的根 URL,因此 "http://localhost:5000" 在那里应该是正确的。相反,您需要配置的是 IdentityServer,以使其在用户未登录的情况下收到授权请求时重定向到正确的端点。

您可以在您的 IdentityServer 应用程序的 Startup 中添加服务:

services.AddIdentityServer(options =>
{
options.UserInteraction.LoginUrl = "/Identity/Account/Login";
options.UserInteraction.LogoutUrl = "/Identity/Account/Logout";
})

关于c# - 如何将 Identity Server 与 .NET Core 2.1 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51728881/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com