运行 Identity Server 方法时为空值

问题描述 投票:0回答:1

我正在尝试设置一个非常简单的 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 的裸流程。

我的目标只是获得授权码流程。

c# asp.net asp.net-core identity openiddict
1个回答
0
投票

修复 OpenID 配置端点的 null 请求变量和 404 错误:

  1. 在 app.UseRouting() 之前添加 app.UseAuthentication() 和 app.UseAuthorization() 确保正确调用 OpenIddict 中间件。
  2. 使用 OpenIddict 服务器选项中的 SetIssuer() 方法配置 OpenID 配置端点。
© www.soinside.com 2019 - 2024. All rights reserved.