问题标签 [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.

0 投票
1 回答
2703 浏览

asp.net-core - OpenIddict 在令牌响应中获取用户 ID

将 ASP.NET Core 与 OpenIddict 密码授予一起使用。

调用身份验证端点时,我得到以下信息:

如何在响应中包含用户 ID?我可以在解码的令牌中看到它,但我的用户应用程序不会对其进行解码。

0 投票
1 回答
1690 浏览

asp.net-web-api - 刷新令牌 - 服务器端存储和撤销多个客户端

我开始使用 ASOS (AspNet.Security.OpenIdConnect.Server) 框架进行基于令牌的身份验证。

我已经完成了访问令牌的生成和检索,现在正转到刷新令牌位。

我的问题是:

  • 我应该如何存储刷新令牌服务器端?
    • 我是否应该将 clientID 以及经过哈希处理和加盐的刷新令牌存储在数据库中(以及实用程序字段,例如到期日期)?
  • 如果我的 API 的用户只有一个 clientID 和 secret,但同时执行许多调用,那么预期的行为是什么(例如,假设他们希望在多台机器上扩展客户端以获得更好的吞吐量)。
    • 具体来说,我的意思是如果客户端的访问令牌中的 1 个已过期,但它们的刷新令牌也已过期怎么办?当然他们可以去令牌端点同时获取一个新的访问令牌和刷新令牌,但是那个clientID的其他实例呢?假设它们的代码是相同的(即它们不共享刷新令牌的知识),每个实例还将继续请求新的访问和刷新令牌。
    • 如果您为 clientID 存储单个刷新令牌,您最终会过度请求刷新令牌,可能每次访问令牌过期时,这是不可取的。
    • 如果您为一个客户端存储多个刷新令牌,有多少是一个合理的数字?

另外,撤销刷新令牌的常见过程是什么?就像从存储它的任何地方删除它一样简单吗?

谢谢。

0 投票
1 回答
596 浏览

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)?

谢谢。

0 投票
1 回答
1011 浏览

oauth-2.0 - 带有 ASOS、.NET Core 管道的 OpenID Connect 服务器

通过实现资源所有者密码凭证授予,我已经开始使用带有 ASOS 的 OpenID Connect 服务器。但是,当我使用邮递员对其进行测试时,我收到了一般的 500 内部服务器错误。

这是我的代码,供您调试乐趣。感谢您的反馈。

谢谢

-比鲁克

这是我的Startup.cs

这是我的AuthorizationProvider.cs

我究竟做错了什么。我可以将它置于调试模式并单步执行它而不会出现任何错误,它只是提琴手和邮递员中的 500 内部服务器错误。

0 投票
1 回答
1586 浏览

c# - 使用 OpenIdConnectServer 并尝试通过 API 服务连接到 Facebook

我试图找出一种方法让我的 API 能够将 Facebook 的用户与我的身份用户相关联。

应用程序上下文

我正在开发一个需要使用用户名/密码和 Facebook 登录的移动应用程序(在 Xamarin 中)。我已经设置了app.UseOpenIdConnectServer配置并创建了自定义Provider,因此我的应用程序已经在使用用户名/密码。

现在我正在尝试与 Facebook 进行集成,但没有找到可以实现这一目标的方法。

我正在考虑在 API 中创建一个服务,比如从 Facebook/api/auth/login-facebook/传递,access-token但我需要将access-token我的 API 应用程序返回到移动应用程序,以便移动应用程序可以调用所有其他需要授权的服务。

有什么帮助吗?

我想要得到的视觉方式:

  1. 用户在移动应用程序中按“使用 Facebook 登录”
  2. 移动应用程序调用从 Facebook/api/auth/login-facebook/传递access-token
  3. 在 API 应用程序中,我将检查access-tokenFacebook
  4. 如果用户不存在,我将使用 Facebook 返回给我的数据创建他,然后我将生成access-token授予对我的 API 应用程序的访问权限
  5. 如果用户存在,我将生成access-token授予对我的 API 应用程序的访问权限
  6. 返回access-token到移动应用程序,以便它可以调用其他服务

如果我的知识有误,我应该以其他方式进行此集成/登录,请随时告诉我!

0 投票
1 回答
286 浏览

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。以上是例如目的;)

0 投票
1 回答
1961 浏览

c# - ASP.NET Core OpenIdConnectServer 数据保护密钥位置

你好,

在我的 ASP.NET Core 应用程序中,我使用 OpenIdConnectServer 进行 Api 身份验证。一切正常。

但是有一件事我无法解决 - 如何设置自定义文件夹以保留令牌签名密钥?

在服务配置中,我有:

首次运行后,会在此处创建应用程序密钥。但是 OpenIdServer 以某种方式自行管理密钥。

尽管如此,凭证签名密钥是在默认位置创建的:

这是错误还是功能?如何强制服务器将密钥也存储在keys/文件夹中?


摘要 - 为什么我这样做

我的想法是从这n 个docker 图像构建一个 API ,将其隐藏在负载均衡器后面并在云中的某个地方运行。问题是 - 当 docker 中的每个实例创建它自己的应用程序和签名密钥时,加密的身份验证令牌将不适用于任何其他实例,除了已创建并使用其密钥签署令牌的实例。因此,我试图将相同的密钥分发给每个运行的 docker 映像。如果可能,到预定义的应用程序文件夹。

或者有没有更好的方法或最佳实践?


提前谢谢你。

0 投票
3 回答
20854 浏览

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(删除它或其他东西)。

0 投票
2 回答
6363 浏览

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 秒。这是怎么回事?

我正在使用的相关库:

0 投票
0 回答
700 浏览

asp.net - 身份验证方案和 facebook 质询 - 授权失败

我找到了关于社交登录的非常有用的科尔多瓦示例https://github.com/aspnet-contrib/AspNet.Security.OpenIdConnect.Samples/ 我已经在此示例之上构建了自己的应用程序,我非常坚持奇怪的问题。第一个输出来自示例,第二个来自我的应用程序。我不知道为什么在我的应用程序中使用“Identity.External”身份验证方案而不是“ServerCookie”。这导致身份验证失败。

示例的输出:

并从我的应用程序中输出:

完整输出:

我的 Startup.cs 文件内容:

AuthorizationController 内容与示例中相同: