首页 > 解决方案 > 混合 IdentityServer4 和 WebAPI .net 4.5.2

问题描述

我是 IdentityServer 的新手。我在这里遵循了 IdentityServer4 教程

但本教程仅展示了如何保护 .net 核心 API。我找不到任何使用 IdentityServer4 的教程,该教程还展示了如何保护 .net 4.# WebAPI。我在这里找到了关于 StackOverflow 的帖子,建议使用 Microsoft Katana JWT 中间件,但我不知道如何实现,因为我是新手。

任何人都可以向我指出一个教程(或必要时的组合),它将为我指明正确的方向。提前致谢。

更新:

我正在尝试将 IdentityServer3 用于 API,将 IdentityServer4 用于授权服务器。

我创建了一个 IdentityServer4 授权服务器,这似乎工作正常。

我创建了一个 WebAPI(使用完整的 .Net 框架——在本例中为 4.7.1)。我已按照 IdentityServer3 文档中有关如何将 IdentityServer 合并到 API 中的说明进行操作。因此,正如预期的那样,当我尝试通过浏览器直接导航到控制器时,我现在得到了 401 未经授权的访问,所以这是安全的。

我创建了一个控制台客户端。我已将其配置为指向 IdentityServer4 Auth Server,现在获取访问令牌。

直到现在,当我在客户端上使用此访问令牌设置 BearerToken 时,我仍然得到 401 Unauthorized。我已经将 http 和 https 都用于授权服务器......我现在又摸不着头脑了!

标签: asp.net-web-apiidentityserver4identityserver3

解决方案


是完整的示例。正如您自己找到的简要指南中所述,您所需要的(添加所有必要的包之后)就是将以下内容添加到您的 Startup.cs:

app.UseIdentityServerBearerTokenAuthentication(new IdentityServerBearerTokenAuthenticationOptions
    {
        Authority = "https://identity.identityserver.io",
        RequiredScopes = new[] { "api1", "api2" }
    });

原来,当与ValidationMode = ValidationMode.ValidationEndpoint选项一起使用时,IdentityServerBearerTokenAuthentication来自 Identityserver 3 与 Identityserver 4 不兼容。切换到 ValidationMode.Local 解决了这种情况。


推荐阅读