问题标签 [aspnet-contrib]
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.
asp.net-core - OpenIddict 在令牌响应中获取用户 ID
将 ASP.NET Core 与 OpenIddict 密码授予一起使用。
调用身份验证端点时,我得到以下信息:
如何在响应中包含用户 ID?我可以在解码的令牌中看到它,但我的用户应用程序不会对其进行解码。
asp.net-web-api - 刷新令牌 - 服务器端存储和撤销多个客户端
我开始使用 ASOS (AspNet.Security.OpenIdConnect.Server) 框架进行基于令牌的身份验证。
我已经完成了访问令牌的生成和检索,现在正转到刷新令牌位。
我的问题是:
- 我应该如何存储刷新令牌服务器端?
- 我是否应该将 clientID 以及经过哈希处理和加盐的刷新令牌存储在数据库中(以及实用程序字段,例如到期日期)?
- 如果我的 API 的用户只有一个 clientID 和 secret,但同时执行许多调用,那么预期的行为是什么(例如,假设他们希望在多台机器上扩展客户端以获得更好的吞吐量)。
- 具体来说,我的意思是如果客户端的访问令牌中的 1 个已过期,但它们的刷新令牌也已过期怎么办?当然他们可以去令牌端点同时获取一个新的访问令牌和刷新令牌,但是那个clientID的其他实例呢?假设它们的代码是相同的(即它们不共享刷新令牌的知识),每个实例还将继续请求新的访问和刷新令牌。
- 如果您为 clientID 存储单个刷新令牌,您最终会过度请求刷新令牌,可能每次访问令牌过期时,这是不可取的。
- 如果您为一个客户端存储多个刷新令牌,有多少是一个合理的数字?
另外,撤销刷新令牌的常见过程是什么?就像从存储它的任何地方删除它一样简单吗?
谢谢。
asp.net-web-api - 如何验证和更改 JWT Alg
我正在使用 ASP.Net OpenID Connect Server 项目 (ASOS) 为我的 WebAPI 创建和使用 JWT。
我现在正在尝试对令牌执行各种验证。
我想知道如何检查“alg”类型。我知道可以传入“none”的问题,这意味着有人可以伪造令牌(我不确定是否只是特定的库有问题,或者它是否只是检查的一般好习惯,但如果我执行该检查,我会感觉更安全)。
另外,如何验证 JWT 的完整性?
目前我的令牌发行者和 WebAPI 在同一个项目中,所以我猜它会自动为我检查?还是根本没有检查?
我的理解是,如果您未指定任何签名凭据,则会在磁盘上为您添加某种签名凭据(不确定我在哪里读到的)。
提供某种签名证书会自动更新“alg”属性吗?
如果我的令牌发行者在 1 台服务器上,而我的 WebAPI 在某个完全不同的地方怎么办。我将如何验证令牌来自我的令牌发行者并且没有受到干扰。
大概我必须手动添加证书,然后以某种方式共享公钥?如果是这样的话,有人能指出我应该在哪里添加公钥来检查 JWT 完整性吗?大概这部分是关于 asp.net Core 而不是 OpenIDConnect Server (ASOS)?
谢谢。
oauth-2.0 - 带有 ASOS、.NET Core 管道的 OpenID Connect 服务器
通过实现资源所有者密码凭证授予,我已经开始使用带有 ASOS 的 OpenID Connect 服务器。但是,当我使用邮递员对其进行测试时,我收到了一般的 500 内部服务器错误。
这是我的代码,供您调试乐趣。感谢您的反馈。
谢谢
-比鲁克
这是我的Startup.cs
这是我的AuthorizationProvider.cs
我究竟做错了什么。我可以将它置于调试模式并单步执行它而不会出现任何错误,它只是提琴手和邮递员中的 500 内部服务器错误。
c# - 使用 OpenIdConnectServer 并尝试通过 API 服务连接到 Facebook
我试图找出一种方法让我的 API 能够将 Facebook 的用户与我的身份用户相关联。
应用程序上下文
我正在开发一个需要使用用户名/密码和 Facebook 登录的移动应用程序(在 Xamarin 中)。我已经设置了app.UseOpenIdConnectServer
配置并创建了自定义Provider
,因此我的应用程序已经在使用用户名/密码。
现在我正在尝试与 Facebook 进行集成,但没有找到可以实现这一目标的方法。
我正在考虑在 API 中创建一个服务,比如从 Facebook/api/auth/login-facebook/
传递,access-token
但我需要将access-token
我的 API 应用程序返回到移动应用程序,以便移动应用程序可以调用所有其他需要授权的服务。
有什么帮助吗?
我想要得到的视觉方式:
- 用户在移动应用程序中按“使用 Facebook 登录”
- 移动应用程序调用从 Facebook
/api/auth/login-facebook/
传递access-token
- 在 API 应用程序中,我将检查
access-token
与Facebook
包 - 如果用户不存在,我将使用 Facebook 返回给我的数据创建他,然后我将生成
access-token
授予对我的 API 应用程序的访问权限 - 如果用户存在,我将生成
access-token
授予对我的 API 应用程序的访问权限 - 返回
access-token
到移动应用程序,以便它可以调用其他服务
如果我的知识有误,我应该以其他方式进行此集成/登录,请随时告诉我!
asp.net-core - openidconnect.server、第三方提供商和重定向
我目前正在使用https://github.com/aspnet-contrib/AspNet.Security.OpenIdConnect.Server和 asp.net 核心身份作为后备存储构建我的 openid 连接服务器。我知道协议、流程和安全漏洞。
当前设置如下:
[server]
- 授权服务器和资源服务器
[front-end]
- 一个 angularJS 应用程序
[third-party-provider]
- Google
[external-app]
- 第二个应用程序,它想使用来自 [server] 的令牌
[front-end]
和都[external-app]
注册为[server]
. 因此,他们被允许检索令牌。登录页面是在[front-end]
.
请记住,登录页面等由[front-end]
应用程序显示(而不是从 AccountController 返回 AuthView)
想象一下,我想使用 登录以[external-app]
从中获取身份[server]
。登录页面由 显示[front-end]
。然后流程将如下所示:
我缺少的一件事(可能是实现缺陷、思想缺陷或其他)是我需要[external-app
使用给定的令牌重定向回 ] 。我需要这样做[front-end]
吗?感觉不对,我有点确定我混合/匹配的东西是错误的。谁能帮我吗?
提前致谢!
PS是的,我知道,应该是https。以上是例如目的;)
c# - ASP.NET Core OpenIdConnectServer 数据保护密钥位置
你好,
在我的 ASP.NET Core 应用程序中,我使用 OpenIdConnectServer 进行 Api 身份验证。一切正常。
但是有一件事我无法解决 - 如何设置自定义文件夹以保留令牌签名密钥?
在服务配置中,我有:
首次运行后,会在此处创建应用程序密钥。但是 OpenIdServer 以某种方式自行管理密钥。
尽管如此,凭证签名密钥是在默认位置创建的:
这是错误还是功能?如何强制服务器将密钥也存储在keys/
文件夹中?
摘要 - 为什么我这样做:
我的想法是从这n 个docker 图像构建一个 API ,将其隐藏在负载均衡器后面并在云中的某个地方运行。问题是 - 当 docker 中的每个实例创建它自己的应用程序和签名密钥时,加密的身份验证令牌将不适用于任何其他实例,除了已创建并使用其密钥签署令牌的实例。因此,我试图将相同的密钥分发给每个运行的 docker 映像。如果可能,到预定义的应用程序文件夹。
或者有没有更好的方法或最佳实践?
提前谢谢你。
cookies - 如何使用带有 OpenId Connect 的刷新令牌在 asp.net 核心中处理过期的访问令牌
我已经使用“Microsoft.AspNetCore.Authentication.OpenIdConnect”配置了一个 ASOS OpenIdConnect 服务器和一个使用“Microsoft.AspNetCore.Authentication.OpenIdConnect”的 asp.net core mvc 应用程序:“1.0.0”和“Microsoft.AspNetCore.Authentication.Cookies”:“1.0.0”。我已经测试了“授权码”工作流程,一切正常。
客户端 Web 应用程序按预期处理身份验证并创建一个存储 id_token、access_token 和 refresh_token 的 cookie。
如何强制 Microsoft.AspNetCore.Authentication.OpenIdConnect 在过期时请求新的 access_token?
asp.net core mvc 应用忽略过期的 access_token。
我想让 openidconnect 查看过期的 access_token,然后使用刷新令牌进行调用以获取新的 access_token。它还应该更新 cookie 值。如果刷新令牌请求失败,我希望 openidconnect “退出” cookie(删除它或其他东西)。
asp.net-core - 为什么我的 JWT 不记名身份验证在令牌说 5 分钟后将令牌识别为过期?
我正在使用 AspNet.Security.OpenIdConnect.Server 发布 JWT 令牌并将 AuthorizationCodeLifetime 设置为 30 秒进行测试。这是我用来设置选项的代码片段
返回的令牌包含:
并且反序列化的令牌包含以下声明:
如您所见,exp(过期时间)是 iat(发布时间)之后的 30 秒。然而,令牌在过期 5 分钟后才会触发 401 Unauthorized。如果我们将 exp 编号插入http://www.epochconverter.com/,那么我们将看到其计算结果为 2016 年 10 月 19 日星期三 22:14:10 GMT,即我当地时间下午 5:14:10。
以下是核心库的一些记录输出:
当然,这个输出并不能证明服务器在 22:14:10 到 22:19:10 之间接受了令牌。如果我碰巧在它过期后等待了 5 分钟然后尝试验证令牌,这就是它会做的事情,但你必须相信我的话。我在 Postman 中进行测试,每秒都单击“发送”,直到它返回 401。
那么这是什么一回事?是否有一些我不知道的内置 5 分钟缓冲区?有趣的是,AccessTokenLifetime 的默认值为 5 分钟,但令牌肯定反映了我已将其更改为 30 秒。这是怎么回事?
我正在使用的相关库:
asp.net - 身份验证方案和 facebook 质询 - 授权失败
我找到了关于社交登录的非常有用的科尔多瓦示例https://github.com/aspnet-contrib/AspNet.Security.OpenIdConnect.Samples/ 我已经在此示例之上构建了自己的应用程序,我非常坚持奇怪的问题。第一个输出来自示例,第二个来自我的应用程序。我不知道为什么在我的应用程序中使用“Identity.External”身份验证方案而不是“ServerCookie”。这导致身份验证失败。
示例的输出:
并从我的应用程序中输出:
完整输出:
我的 Startup.cs 文件内容:
AuthorizationController 内容与示例中相同: