【问题标题】:IdentityServer4 Quickstart for IdentityServer as Identity/api endpoints and MVC clientIdentityServer4 快速入门 IdentityServer 作为身份/api 端点和 MVC 客户端
【发布时间】:2020-06-27 09:15:41
【问题描述】:

我正在按照快速入门和指南运行 asp.net core 3.1 和 IdentityServer4。

在同一个项目中实现 IS 端点和 api 端点时,我有点迷茫。我希望服务器托管 IS 身份验证/登录 url、api 和 mvc 客户端。我想发行将由 IS 主机/mvc 客户端和客户端凭据客户端使用的不记名令牌。

我已经完成了快速入门并让 MVC 客户端和控制台客户端向我的身份服务器主机进行身份验证,但是当我尝试使用我的身份服务器主机进行身份验证然后转到其中一个视图控制器时,我只需通过身份验证即可获得循环工作流程。

我相信这是因为我的帐户控制器登录发布方法没有发出不记名令牌。我在想我需要在登录过程中调用身份服务器以设置承载 cookie。 (也有可能我只是在我的视图控制器上遗漏了一些东西来告诉它它是允许访问的组的一部分?)

我有这个允许来自控制台应用程序的客户端凭据工作:

    services.AddAuthentication("Bearer")
    .AddJwtBearer("Bearer", options =>
        {
            options.Authority = Constants.HostUrl;
            options.RequireHttpsMetadata = false;
             options.Audience = "api";
        });

但如果我删除它,那么通过主机身份服务器的登录工作流程就可以工作,我可以访问我的视图和 api 控制器。

是否有我缺少的快速入门显示身份服务器也是 mvc 客户端?

谢谢

【问题讨论】:

  • 代码services.AddAuthentication("Bearer") 为服务添加身份验证。这定义了传入请求必须在标头请求中具有 json Web 令牌。如果您删除 AddAuthentication 和 AddJwtBearer 调用,则不会进行令牌检查。这意味着您正在访问视图和 api 控制器,但没有进行令牌检查。不幸的是,我不能很好地理解你的情况。能否请您查看IdentityServer samples 并帮助我了解与您的情况相似的情况?

标签: c# asp.net-core oauth identityserver4


【解决方案1】:

当我尝试使用身份服务器主机对其自身进行身份验证时,我只是通过身份验证返回一个循环工作流。

那么,for itself 是什么意思? 您是否尝试为用于托管 REST API 的服务请求令牌?

看起来您有某种客户端(例如后台服务),并且正在尝试获取该客户端的令牌。 是这样吗?

似乎您可以使用the client credentials flow 但是这需要将clientid 和secret 存储在某个地方。 Here is some documentation.

您也可以使用身份服务器的Windows Authentication feature

【讨论】:

  • 感谢您的回复/提问。我更新了问题以试图澄清,我的意思是身份服务器身份验证主机/api 主机登录工作流程只是在完成登录后返回登录。
猜你喜欢
  • 2016-05-16
  • 2020-12-20
  • 1970-01-01
  • 2020-03-29
  • 1970-01-01
  • 2019-10-12
  • 1970-01-01
  • 2017-03-07
  • 2020-12-29
相关资源
最近更新 更多