【问题标题】:.net core 5.0 with IdentityServer4 returns for api method 404.net core 5.0 with IdentityServer4 返回 api 方法 404
【发布时间】:2021-06-22 17:44:42
【问题描述】:

我在 GitHub 上设置了我的初始解决方案。

我设置了 swagger 授权以及 sql db 用户身份(程序获取正确的种子数据)并且程序让我获得授权。 但是当我调用我的方法 /WeatherForecast 它返回 404。

我的整个代码都在上面的 repo 链接上。请告诉我是否需要直接在此处附加一些代码。

Ofc,当我从我的 api 控制器中删除 [Authorize] 注释时,我可以到达方法(进入方法)

我还阅读了关于app.UseAuthentication; app.UseAuthorization 的 Startup 类中的顺序有多重要,我也检查了这一点。

我不知道我还需要做什么才能获得 SuccessCode 200。

对于那些想从我的 github repo 本地运行它的人:

appsettings.Development -> 只需指向本地 sql db 服务器和空数据库即可开始播种数据。

client_id:大客户 client_secret: 秘密

请检查两个范围(读、写)

【问题讨论】:

  • 问题需要独立。
  • 对不起,我听不懂你的评论?
  • 您的问题不能依赖外部链接来回答问题,您可以提供外部链接作为额外信息。
  • API 看起来您正在尝试将 IdentityServer 合并到 API 本身中。所以你的 repo 中的 IdentityServer 项目不是问题的一部分,对吧?
  • 是的,我试图将所有内容集中在一个项目(webapi)中控制器,在我看来它根本找不到它(404 错误)

标签: c# asp.net-core swagger asp.net-core-webapi identityserver4


【解决方案1】:

您似乎想使用 Client Credentials flow 来验证您的 API 的 Swagger...至少,这是您添加到 Swagger here 的安全定义。

但是,正如您从流程解释的链接中看到的那样,这需要您的 Identity Server 和您的 Fancy API 相互交谈。因此,它们必须是两个独立运行的 API。因此,您不应在 Fancy API 中添加/使用所有 Identity Server 接线。

您的 Swagger 和您的 API 进行身份验证的权限(正如您在 authorization and token URLs 中定义的那样)必须是该 Identity Server。

此外,您的 API 身份验证已注释掉 here - 并且具有与 Swagger 不同的权限 - 因此您似乎没有使用您收到的令牌。但是,您然后添加授权here

IdentityServer4 存储库有一些非常好的示例来指导我们,包括一个用于客户端凭据流的示例here。这当然可以帮助你:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-02-15
    • 1970-01-01
    • 1970-01-01
    • 2021-10-07
    • 2020-03-24
    • 1970-01-01
    • 2019-01-19
    相关资源
    最近更新 更多