我正在尝试设置一个非常简单的 OpenIddict 项目,但我遇到了很多问题和疑问以使其运行。
我的项目仅包含 OpenIddict.AspNetCore 库并使用 Net6。 代码就是:
using Microsoft.AspNetCore;
using OpenIddict.Abstractions;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddOpenIddict()
.AddServer(options =>
{
options
.AllowAuthorizationCodeFlow()
.RequireProofKeyForCodeExchange();
options
.SetAuthorizationEndpointUris("/authorize")
.SetTokenEndpointUris("/token");
options
.UseAspNetCore()
.EnableTokenEndpointPassthrough()
.EnableAuthorizationEndpointPassthrough();
options.EnableDegradedMode(); //To suppress calls to the DB
});
var app = builder.Build();
if (!app.Environment.IsDevelopment())
{
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.MapGet("/authorize", async (HttpContext context) =>
{
var request = context.GetOpenIddictServerRequest();
if (request != null && request.IsAuthorizationCodeFlow())
{
await context.Response.WriteAsync("Call to /authorize received");
}
throw new Exception("Invalid request");
});
app.UseRouting();
app.Run();
当我运行此命令时,我的 /authorize 委托中的请求变量始终为 null。
另外,我希望有端点 .well-known/openid-configuration,但它返回 404。
我还不想包含 EF,因为我更喜欢先查看工作流程(并且可能是除 EF 之外的另一个 Db 实现)。而且,这是基本示例中反复出现的问题:它们有太多的实现细节,使得很难找到 IdentityServer 的裸流程。
我的目标只是获得授权码流程。
修复 OpenID 配置端点的 null 请求变量和 404 错误: