gpt4 book ai didi

asp.net-core - 无法请求 token ,请求字段为空

转载 作者:行者123 更新时间:2023-12-04 02:17:17 26 4
gpt4 key购买 nike

我正在尝试为 SPA 创建 API。我正在使用最新的 .NET Core、MVC 和 EF。我想使用 JWT 对用户进行身份验证,所以我决定使用 openiddict core。我已尝试根据 github page 中的示例进行设置和 this blog post .问题是我收到“不支持指定的授权类型”。请求 token 时。

这是 postman 请求的屏幕截图: Postman request

这是我的 ConfigureServices 方法:

public void ConfigureServices(IServiceCollection services)
{
// Add framework services.
services.AddApplicationInsightsTelemetry(Configuration);

services.AddMvc();

services.AddDbContext<ApplicationDbContext>(
options => options.UseSqlServer(Configuration["Data:DefaultConnection:ConnectionString"])
);

services.AddIdentity<ApplicationUser, ApplicationRole>()
.AddEntityFrameworkStores<ApplicationDbContext>()
.AddDefaultTokenProviders();

services.AddOpenIddict<ApplicationDbContext>()
.UseJsonWebTokens()
.EnableTokenEndpoint("/connect/token")
.AllowPasswordFlow()
.DisableHttpsRequirement() // TODO: remove in production
.AddEphemeralSigningKey(); // TODO: replace with a certificate, this should be used for development only
}

Configure 方法:

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
loggerFactory.AddConsole(Configuration.GetSection("Logging"));
loggerFactory.AddDebug();

if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}

app.UseApplicationInsightsRequestTelemetry();

app.UseApplicationInsightsExceptionTelemetry();

// don't use identity as this is a wrapper for using cookies, not needed
// app.UseIdentity();

app.UseJwtBearerAuthentication(new JwtBearerOptions
{
AutomaticAuthenticate = true,
AutomaticChallenge = true,
RequireHttpsMetadata = false, // TODO: remove, dev only
Audience = "http://localhost:42443/", // TODO: ???
Authority = "http://localhost:42443/" // TODO: ???
});

app.UseOpenIddict();

app.UseMvcWithDefaultRoute();
}

我正在使用 AuthorizationController从示例中处理 token 请求。通过观察处理 /connect/token 请求的 Exchange 方法的 request 参数的内容,我发现它接收所有字段为空: Debugger

我不知道为什么。 postman 要求根据this应该是正确的和 this博客文章。问题出在哪里?

最佳答案

作为mentioned in the samples ,您必须注册 OpenIddict MVC 模型绑定(bind)器才能将 OpenIdConnectRequest 用作操作参数。

引用 OpenIddict.Mvc 包并调用 AddMvcBinders 它应该可以工作:

services.AddOpenIddict<ApplicationDbContext>()
// Register the ASP.NET Core MVC binder used by OpenIddict.
// Note: if you don't call this method, you won't be able to
// bind OpenIdConnectRequest or OpenIdConnectResponse parameters.
.AddMvcBinders()

...

关于asp.net-core - 无法请求 token ,请求字段为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40195878/

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