问题标签 [identityserver4]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
9519 浏览

javascript - 如何通过 ClientCredentials ASP.NET Core 使用 IdentityServer4 和 Javascript 客户端

我正在实施 IdentityServer4 我正在制作 3 个不同的项目:

所有项目均使用 ASP.NET Core 创建,但 JS 客户端使用静态文件。

我需要 JS 客户端仅使用身份令牌(而不是访问令牌)与 API 连接,因为我只需要访问 API,不需要管理用户身份验证。

我正在阅读快速入门帖子https://identityserver4.readthedocs.io/en/dev/quickstarts/1_client_credentials.html

当我阅读时,我认为我需要使用隐式大类型,我不需要 OpenID Connect,只需要 OAuth2。

我也读了这篇文章 https://identityserver4.readthedocs.io/en/dev/quickstarts/7_javascript_client.html 但他们使用访问令牌,我不需要它,连接到我使用 oidc-client-js 库https ://github.com/IdentityModel/oidc-client-js我搜索了使用隐式大类型的方法,但我使用的方法将我重定向到http://localhost:5000/connect/authorize页面(我认为这是我需要使用 OpenID Connect 的时候)

实现这一目标的最佳方法是什么?我有什么错?如何使用 api 进行身份验证并调用http://localhost:5001/values

身份服务器项目

配置文件

启动.cs

API项目

启动.cs

值控制器.cs

Javascript客户端项目

oidc-client-sample.html

oidc-client-sample.js

oidc-client-sample-callback.html

0 投票
1 回答
1945 浏览

c# - 使用 Identity Server 4 在包含视图和资源的 MVC Core 应用程序中刷新访问令牌的最佳实践

我一直在阅读(并观看视频),了解如何在使用包含大量 ajax 调用的 MVC Core 应用程序时最好地实现访问和刷新令牌。我想我做对了,但只是想知道是否有更好的方法来做到这一点。我将编辑这篇文章,以便它可以作为任何寻找此信息的人的参考。

我的设置:我有一个包含大量 JavaScript 的 MVC Core 应用程序。JavaScript 使用 ajax 调用来检索 json 或调用操作。

因为我不希望我的用户能够使用 cookie 身份验证访问我的 api,所以我使用 app.Map 将我的应用程序分成两部分。一种是用户可以使用身份令牌访问视图,另一种是需要访问令牌。我还添加了一个 cookie 来保存我需要刷新访问令牌的时间。

Startup.cs(我删除了不重要的部分)

对控制器操作的所有 ajax 调用都是使用以下 url /api/[Controller]/[Action] 完成的。

我不希望使用身份令牌访问我的 api,因此我还将 Authorize(ActiveAuthenticationSchemes = "Bearer") 属性添加到控制器操作中。所以现在我的被 javascript 调用的控制器操作看起来像这样:

当 javascript 需要访问 api 资源时,控制器首先检索访问令牌并使用自定义 javascript init 方法将其注入 javascript。

此 C# 方法负责刷新和检索访问 cookie。

在我所有的 $.ajax 上,我添加了以下参数:

而已。默认访问令牌到期时间为一小时。我总是在一半之后刷新它。

现在我的问题:

  1. 我可以以任何方式改进我的代码吗?
  2. 您是否看到这样做有任何与安全相关的风险?
  3. 我可以在 OnTicketReceived 中检索访问令牌吗?
0 投票
1 回答
1967 浏览

ssl - 在 AWS 中调用 IdentityServer4 时获取“IDX10108:根据 HTTPS 方案指定的地址无效”

我们已经使用 IdentityServer4 实现了一个身份服务器并将其部署到 AWS。在我们在 ELB 上启用 https 之前,它运行良好。现在,当客户端尝试进行身份验证时,我们会收到以下错误:

从我读到的内容来看,客户对证书不满意。这可能与身份服务器的主机名和证书中的名称有关。我们有一个主题为“*.mycompany.com”的有效通配符证书。我们将具有权限的客户端配置为“ https://int.mycompany.com ”,因此这似乎是一致的。

我还在这些负载平衡配置中读到了一些标头必须转发到中间件,但我不确定这将如何工作。

0 投票
1 回答
9179 浏览

c# - 身份服务器 4 Swagger 身份验证

我目前在使用 swagger 授权对身份服务器 4 的 api 调用时遇到问题。
我的 swagger 依赖项是在身份服务器 4 中使用 swashbuckle version -beta 客户端对象看起来像

客户端对象是身份验证配置方法中的身份服务器4模型我有这个

使用提琴手我的获取请求看起来像这样

GET /connect/authorize?state=9321480892748389&nonce=5279296493808222&client_id=swagger&redirect_uri=http%3A%2F%2Flocalhost%3A15138%2Fswagger%2Fui%2Fpopup.html&response_type=id_token%20token&scope=apil HTTP/1.1

所有必要的参数都在那里,客户端具有相应的客户端 ID,但我得到的响应是重定向到错误页面,并带有无效请求的消息。我期待一个登录页面传递凭据或类似的东西来获得授权,我想知道我做错了什么导致这种情况发生。

0 投票
0 回答
1004 浏览

cookies - 无法设置身份验证 cookie 生命周期 - IdentityServer4

我正在尝试设置IdentityServer4身份验证 cookie 的生命周期。这是我的客户端配置:

Configure在 mvc 客户端中的方法是

我正在使用 IdentityServer4 示例中的以下示例来学习 IdentityServer4。 IdentityServer4.Samples/Quickstarts/5_HybridFlowAuthenticationWithApiAccess
我已经设置了cookie过期时间、访问令牌寿命、身份令牌寿命和授权码寿命。但是 cookie 的生命周期仍然在浏览器中显示为会话。
请看下图

在此处输入图像描述

我错过了任何设置吗?

任何帮助是极大的赞赏。

0 投票
1 回答
4116 浏览

azure - IdentityServer 4 作为 Azure 应用服务的身份提供者

根据此链接,我可以使用除 Active Directory、Google、Facebook 等开箱即用提供商之外的其他身份提供商。我有一个 IdentityServer4 作为 azure 中的 Web 应用程序托管,并希望将其添加为自定义身份提供程序。但是,当在 azure 门户中转到我的移动应用服务的授权/身份验证刀片时,没有自定义身份提供者的选项。

在此处输入图像描述

我在网络上找不到允许您添加自定义身份提供者的教程。请注意,我正在研究如何添加自定义身份提供程序,而不是使用 Azure 中记录的自定义身份验证逻辑。我将不胜感激。谢谢你。

0 投票
1 回答
2357 浏览

asp.net-core - 没有指定授权的存储机制

我是 IdentityServer 的新手,在设置它时遇到了一些麻烦。

由于我不会进入这里的原因,我不能使用 ASP.NET Identity 或 EntityFramework。我有一个自定义数据库供我需要对其进行身份验证的用户使用,因此我提取了样本并尝试将 InMemoryUsers 切换为自定义持久性存储。

这是我的 ConfigureServices 方法:

我知道这种方法是不完善的,因为我还在测试一些东西,但是当我运行应用程序时,我得到了这个错误:

System.InvalidOperationException 未指定授权的存储机制。使用“AddInMemoryStores”扩展方法注册开发版本。

显然我不想在内存存储中使用生产实现,但我不确定我需要做什么来解决这个问题。

0 投票
1 回答
23 浏览

identityserver4 - Identityserver4 1.0.0-rc1-update2 以 1.0.0-beta1-update1 结束

我想更新我的项目以使用 1.0.0-rc1-update2,但在我的 project.json 中它说我最终使用了 1.0.0-beta1-update1。我在这里做错了什么?

在此处输入图像描述

0 投票
1 回答
798 浏览

.net-core - 多个 IdentityServer4 服务的最佳实践

我有两个身份服务器和一个 Web API。我试图做的是让 API 对一个或两个 IdentityServers 进行身份验证,并且能够在其中一个发生故障时进行切换。如果可能的话,我还希望能够在运行时添加一个新的 IdentityServer。

这里有什么最佳实践吗?

到目前为止,它看起来像这样。

如果我在端口 5000 处关闭 IdentityServer,我将无法再使用 API。这是可以预料的。

0 投票
2 回答
7561 浏览

asp.net-core - 验证凭据自定义用户数据库 - IResourceOwnerPasswordValidator

我正在使用 Identity Server 4 并实现了以下两个接口:

IResourceOwnerPasswordValidator:用于针对我的自定义数据库验证用户凭据

IProfileService:用于获取必要的声明

然后将必要的接口和依赖项添加到 Startup 类中的服务中。我还通过注入具有以下实现的登录服务修改了帐户控制器:

AccountController“登录”操作通过调用验证凭据:

调试项目时调用 AccountContoller 的登录操作,然后调用我的登录服务。验证用户凭据后,将显示同意页面,这会触发 ProfileService GetProfileDataAsync 方法。

但是,从未调用过 ResourceOwnerPasswordValidator。我是以正确的方式实现 LoginService 还是应该替换由 IResourceOwnerPasswordValidation 注入的 IUserRepository,然后在 Login Service ValidateCredentails 中调用“ValidateAsync”方法?

如果是这样的话,将它传递给 LoginService 有什么好处,因为我已经在以这种方式验证用户了?