问题标签 [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.
javascript - 如何通过 ClientCredentials ASP.NET Core 使用 IdentityServer4 和 Javascript 客户端
我正在实施 IdentityServer4 我正在制作 3 个不同的项目:
- 身份服务器 ( http://localhost:5000 )
- API ( http://localhost:5001 )
- Javascript 客户端 ( http://localhost:5003 )
所有项目均使用 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
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 上,我添加了以下参数:
而已。默认访问令牌到期时间为一小时。我总是在一半之后刷新它。
现在我的问题:
- 我可以以任何方式改进我的代码吗?
- 您是否看到这样做有任何与安全相关的风险?
- 我可以在 OnTicketReceived 中检索访问令牌吗?
ssl - 在 AWS 中调用 IdentityServer4 时获取“IDX10108:根据 HTTPS 方案指定的地址无效”
我们已经使用 IdentityServer4 实现了一个身份服务器并将其部署到 AWS。在我们在 ELB 上启用 https 之前,它运行良好。现在,当客户端尝试进行身份验证时,我们会收到以下错误:
从我读到的内容来看,客户对证书不满意。这可能与身份服务器的主机名和证书中的名称有关。我们有一个主题为“*.mycompany.com”的有效通配符证书。我们将具有权限的客户端配置为“ https://int.mycompany.com ”,因此这似乎是一致的。
我还在这些负载平衡配置中读到了一些标头必须转发到中间件,但我不确定这将如何工作。
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,但我得到的响应是重定向到错误页面,并带有无效请求的消息。我期待一个登录页面传递凭据或类似的东西来获得授权,我想知道我做错了什么导致这种情况发生。
cookies - 无法设置身份验证 cookie 生命周期 - IdentityServer4
我正在尝试设置IdentityServer4
身份验证 cookie 的生命周期。这是我的客户端配置:
我Configure
在 mvc 客户端中的方法是
我正在使用 IdentityServer4 示例中的以下示例来学习 IdentityServer4。
IdentityServer4.Samples/Quickstarts/5_HybridFlowAuthenticationWithApiAccess
我已经设置了cookie过期时间、访问令牌寿命、身份令牌寿命和授权码寿命。但是 cookie 的生命周期仍然在浏览器中显示为会话。
请看下图
我错过了任何设置吗?
任何帮助是极大的赞赏。
azure - IdentityServer 4 作为 Azure 应用服务的身份提供者
根据此链接,我可以使用除 Active Directory、Google、Facebook 等开箱即用提供商之外的其他身份提供商。我有一个 IdentityServer4 作为 azure 中的 Web 应用程序托管,并希望将其添加为自定义身份提供程序。但是,当在 azure 门户中转到我的移动应用服务的授权/身份验证刀片时,没有自定义身份提供者的选项。
我在网络上找不到允许您添加自定义身份提供者的教程。请注意,我正在研究如何添加自定义身份提供程序,而不是使用 Azure 中记录的自定义身份验证逻辑。我将不胜感激。谢谢你。
asp.net-core - 没有指定授权的存储机制
我是 IdentityServer 的新手,在设置它时遇到了一些麻烦。
由于我不会进入这里的原因,我不能使用 ASP.NET Identity 或 EntityFramework。我有一个自定义数据库供我需要对其进行身份验证的用户使用,因此我提取了样本并尝试将 InMemoryUsers 切换为自定义持久性存储。
这是我的 ConfigureServices 方法:
我知道这种方法是不完善的,因为我还在测试一些东西,但是当我运行应用程序时,我得到了这个错误:
System.InvalidOperationException 未指定授权的存储机制。使用“AddInMemoryStores”扩展方法注册开发版本。
显然我不想在内存存储中使用生产实现,但我不确定我需要做什么来解决这个问题。
.net-core - 多个 IdentityServer4 服务的最佳实践
我有两个身份服务器和一个 Web API。我试图做的是让 API 对一个或两个 IdentityServers 进行身份验证,并且能够在其中一个发生故障时进行切换。如果可能的话,我还希望能够在运行时添加一个新的 IdentityServer。
这里有什么最佳实践吗?
到目前为止,它看起来像这样。
如果我在端口 5000 处关闭 IdentityServer,我将无法再使用 API。这是可以预料的。
asp.net-core - 验证凭据自定义用户数据库 - IResourceOwnerPasswordValidator
我正在使用 Identity Server 4 并实现了以下两个接口:
IResourceOwnerPasswordValidator:用于针对我的自定义数据库验证用户凭据
IProfileService:用于获取必要的声明
然后将必要的接口和依赖项添加到 Startup 类中的服务中。我还通过注入具有以下实现的登录服务修改了帐户控制器:
AccountController“登录”操作通过调用验证凭据:
调试项目时调用 AccountContoller 的登录操作,然后调用我的登录服务。验证用户凭据后,将显示同意页面,这会触发 ProfileService GetProfileDataAsync 方法。
但是,从未调用过 ResourceOwnerPasswordValidator。我是以正确的方式实现 LoginService 还是应该替换由 IResourceOwnerPasswordValidation 注入的 IUserRepository,然后在 Login Service ValidateCredentails 中调用“ValidateAsync”方法?
如果是这样的话,将它传递给 LoginService 有什么好处,因为我已经在以这种方式验证用户了?