gpt4 book ai didi

c# - 在 IDS4 和 ASP.NET Core 2.2 下使用 Jwt token 获取 401 访问安全页面

转载 作者:太空宇宙 更新时间:2023-11-03 12:07:26 25 4
gpt4 key购买 nike

我已经通过添加以下行配置了 MVC 客户端。

services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer();

错误消息是(某种程度上)预期的 401 Unauthorized。所以我为 bearer 添加了配置 as suggested by Microsoft .

services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(_ =>
{
_.Authority = "http://localhost:5000";
_.Audience = "http://localhost:5002";
});

在我的解决方案中,端口 5000 托管 IDS4 提供程序,端口 5002 托管 MVC 应用程序。那时我得到了一个错误,因为我目前严格运行 HTTP。我的建议是通过将 RequireHttpsMetadata 设置为 false 来降低安全性,我的做法如下所示。

services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(_ =>
{
_.Authority = "http://localhost:5000";
_.Audience = "http://localhost:5002";
_.RequireHttpsMetadata = false;
})

令我失望的是,在请求由 [Authorize] 装饰的页面时,我的浏览器返回 401 Unauthorized。

我不确定如何进一步诊断它。我试图将我的代码与无数示例进行比较,但没有发现任何显着差异。此外,许多示例都考虑了其他版本的 Core、IDS 或方案。我需要有关气味可能来自何处的建议。

最佳答案

来自 IdentityServer4 samples您可以看到他们正在为 MVC 客户端示例使用 AddOpenIdConnect 而不是 AddJwtBearer。您的 MVC 客户端服务注册应如下所示:

        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.SaveTokens = true;
});

最后,确保您有一个允许范围访问您的 api 资源的客户端和适当的授权类型:

            // OpenID Connect implicit flow client (MVC)
new Client
{
ClientId = "mvc",
ClientName = "MVC Client",
AllowedGrantTypes = GrantTypes.Implicit,

RedirectUris = { "http://localhost:5002/signin-oidc" },
PostLogoutRedirectUris = { "http://localhost:5002/signout-callback-oidc" },

AllowedScopes =
{
IdentityServerConstants.StandardScopes.OpenId,
IdentityServerConstants.StandardScopes.Profile
}
}

AddOpenIdConnect 基本上为您预配置了来自 IDS4 的回调的处理程序端点,以让用户登录和注销,并创建适当的 ClaimsPrincipal

关于c# - 在 IDS4 和 ASP.NET Core 2.2 下使用 Jwt token 获取 401 访问安全页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54173177/

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