问题标签 [openiddict]

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 投票
3 回答
4156 浏览

.net - IdentityServer 4 or OpenIddict?

Which one of these would be the easiest to setup server-to-server JWT on? I already have an existing JWT token do I need to setup an entire server just to pass through the token?

I have a requirement use-case to create a client for a web API hosted on another server but cannot figure out how to pass the credentials in .NET Core to the other server, I just need to be able to construct a GET and a POST using C# into a remote server API and build some charting to display the results of the GET.

0 投票
2 回答
1104 浏览

asp.net-core - OpenIddict:当两个或更多服务实例计数时出现 401 错误

我有一个带有 Angular2 UI 的 .NET Core 应用程序,它在我使用 OpenIddict 保护的 Service Fabric 集群中运行。我按照这个例子:https ://github.com/openiddict/openiddict-samples/tree/master/samples/RefreshFlow

当我只有一个无状态 .NET Core 应用程序实例时,它的效果很好。当我将实例数增加到两个时,身份验证失败并且我收到一堆 401 错误。我收到的令牌似乎只对那个特定实例有用,而在另一个实例上被拒绝。我想我理解为什么会发生这种情况,但我不知道如何解决它。

任何帮助将不胜感激。

0 投票
0 回答
369 浏览

angularjs - 不使用任何 Asp.Net 身份表的 Web API OAuth 外部登录?

我正在开发一个支持一些 Asp.Net Core Web API 的 AngularJS 应用程序。此应用程序未在后端使用任何数据库。现在我想为一些特权访问实现一个社交登录选项。不使用任何 Asp.Net Identity 表的最佳身份验证机制是什么?

据我所知,OpenIddict 与 Asp.Net Identity 相结合,因此我必须为此实现存储机制。如果我错了,请纠正我。我也在寻找像 ASOS 这样的其他选项,但与 OpenIddict 相比它太复杂了,所以我找不到一个好的解决方案。

Kevin Chalet 发表了一篇优秀的文章,但由于我对这个主题的技术知识很差,我仍然在苦苦挣扎。

http://kevinchalet.com/2016/07/13/creating-your-own-openid-connect-server-with-asos-introduction/

你能指导我吗?

0 投票
1 回答
818 浏览

asp.net-core - 使用 TestServer 托管 ASOS

我有一个OpenIdDict基于AspNet.Security.OpenIdConnect.Server. 设置按预期工作。

现在做一些流程集成;跨越整个后端架构的系统测试,我使用这个TestServer类。

为什么我这样测试是另一个问题

  • 以最少的工作量获得最多的测试代码覆盖率
  • 已决定不进行单元测试......(他们说工作太多)
  • 真正的集成测试,它跨越的代码少得多,当我想要获得良好的覆盖率时,这些测试也被视为很多工作
  • 该测试基于使用域语言方法构建的框架,这意味着我可以为我们当前的 web api 测试、selenium web ui 测试、selenium 负载测试和 wpf ui 测试描述相同的功能。

当我调用资源服务器的 Web api 端点时,授权想要加载http://localhost/.well-known/openid-configuration但失败。

{“IDX10803:无法从以下位置获取配置:' http://localhost/.well-known/openid-configuration '。”})

这是我用于测试环境的 OpenIdConnectSettings:

  • AllowInsecureHttp = true,
  • RequireHttpsMetadata = false

我可以让服务器发出配置还是以其他方式提供配置?

0 投票
0 回答
344 浏览

openiddict - 尝试使用 OpenIddict 检索刷新令牌会导致内部服务器错误

我正在尝试使用 OpenIddict 库获取访问和刷新令牌。

请求访问令牌时一切似乎都很好。但是当添加 scope = offline_access 时,会返回 500 Internal Server Error。

使用带有 grant_type = 密码的 Postman,并设置了用户名和密码,将返回一个有效的 access_token。

但在添加 scope = offline_access 后,状态为 500 Internal Server Error。

我注册了 OpenIddict 服务

我注册了 OpenIddict 和验证中间件

并创建一个令牌认证控制器

如果删除 SetScopes 调用,错误就会消失,但不会返回任何刷新令牌。

现在在兜圈子。非常感谢任何帮助。

0 投票
2 回答
11510 浏览

c# - 如何在 asp.net core 中从 JWT 检索 ClaimsPrincipal

在我的解决方案中,我有两个项目。1) Web API 和 2) MVC。我正在使用 ASP.NET 核心。API 发出 JWT 令牌,MVC 使用它来获取受保护的资源。我正在使用openiddict库来发布 JWT。在 MVC 项目中,在 AccountController Login 方法中,我想检索 ClaimsPrincipal(使用 JwtSecurityTokenHandler ValidateToken 方法)并分配给 HttpContext.User.Claims 和 HttpContext.User.Identity。我想将令牌存储在会话中,并且对于成功登录后的每个请求,将其在标头中传递给 Web API。我可以成功地发出 JWT 并在 MVC 项目中使用它,但是当我尝试检索 ClaimsPrincipal 时,它会抛出一个错误。首先,我什至不确定从 JWT 检索 ClaimsPrinciapal 是否正确。如果是的话,前进的方向是什么。

WebAPI.启动.CS

发出 JWT 的 WebAPI.AuthorizationController.cs。

MVC.AccountController.cs 包含 Login、GetTokenAsync 方法。

我收到的错误:“IDX10501:签名验证失败。无法匹配 'kid':'0-AY7TPAUE2-ZVLUVQMMUJFJ54IMIB70E-XUSYIB',\ntoken:'{\"alg\":\"RS256\",\"typ\ ":\"JWT\",\"kid\":\"0-AY7TPAUE2-ZVLUVQMMUJFJ54IMIB70E-XUSYIB\"}.{\"sub\":\"10\",\"用户名\":\".. .

0 投票
1 回答
368 浏览

c# - 调用令牌端点时出现 MissingExceptionMethod 错误

好的,我有一个使用 Openiddict 进行令牌授权的 .NET Core 项目。直到今天我突然遇到 MissingExceptionMethod 错误时,它一直运行良好。真正奇怪的是,同样的事情发生在上周完美运行的代码版本上。就好像它突然破裂了,什么都没有改变。奇怪的是,这在 Openiddict 之前已经发生过,并且更新修复了它,但这次没有可用的更新。我正在使用 .NET Core 1.1.1、Identity Framework 1.1.1 和 Openiddict 10.0.-beta2-0584。

这是完整的错误:

这是令牌端点代码:

它似乎正在寻找重定向代码的事实让我想知道它是否突然尝试重定向错误而不是返回状态代码,但我很长时间没有更改任何内容。下面是 Openiddict 等的初始化代码:

这个错误可能来自哪里的任何想法?

更新 - 这是 csproj

0 投票
1 回答
583 浏览

asp.net-core-mvc - 使用 openIdDict,我们是否必须在 Startup.cs 中有“UseIdentity()”?

我们有一个使用 OpenIdDict 进行身份验证的 asp.net 核心 Web 应用程序。我注意到我未经身份验证的 Ajax 调用在响应正文中返回 200 和我们的登录表单。根据我的阅读,这是预期的行为,因为 OpenIdDict 处理请求,然后 ASP.NET 核心处理它并返回 200。ASP.NET 核心正在处理它,因为在 Startup.cs 中调用了“UseIdentity()”。我看到的所有 OpenIdDict 示例都称为“UseIdentity”。我有 2 个问题。

  1. 如果我不希望 ASP.NET 核心处理我的请求,我可以删除“UseIdentity()”吗?我试过了,现在我得到的是 401 而不是 200。这样做有什么害处吗?或者 OpenIdDict 是否需要“UseIdentity()”?
  2. 如果我不想失去重定向以登录 UI 视图的能力,是实现此功能以覆盖 OnRedirectToLogin 的最佳/最简单/最安全的方法吗?下面的代码示例:

options.Cookies.ApplicationCookie.Events = new CookieAuthenticationEvents { OnRedirectToLogin = ctx => { if (ctx.Request.Path.StartsWithSegments("/api") && ctx.Response.StatusCode == (int) HttpStatusCode.OK) { ctx.Response.StatusCode = (int) HttpStatusCode.Unauthorized; } else { ctx.Response.Redirect(ctx.RedirectUri); } return Task.FromResult(0); } };

代码示例来源:https ://devblog.dymel.pl/2016/07/07/return-401-unauthorized-from-asp-net-core-api/

在这里进一步讨论这个问题:https ://github.com/aspnet/Security/issues/804

0 投票
1 回答
1476 浏览

c# - OpenIdDict 和 ASP.NET Core:成功取回令牌后的 401(完整重现)

仍然在 ASP.NET Core 中使用 OpenIdDict(凭据流)定期与 OpenAuth 作斗争,我更新到最新的 OpenIdDict 位和 VS2017 我的旧示例代码,您可以在https://github.com/Myrmex/repro-oidang找到创建基本启动模板的完整分步指南。希望这对社区有用,可以帮助您开始使用简单的安全方案,因此欢迎对这个简单的示例代码做出任何贡献。

本质上,我遵循了 OpenIdDict 作者的凭据流示例,我可以在请求它时取回我的令牌(使用 Fiddler):

问题是当我尝试使用这个令牌时,我一直收到 401,没有任何其他提示:没有异常,没有记录。请求是这样的:

这是我的相关代码:首先Startup.cs

然后是我的控制器(您可以在上面引用的存储库中找到整个解决方案):

0 投票
2 回答
1271 浏览

ssl - AddSigningCertificate 的 OpenIddict 错误

我正在尝试登录证书(OpenIddict),但在尝试使用指纹时出现错误:

和错误:

应用程序启动异常:System.Security.Cryptography.CryptographicException:OpenCSP 失败,错误代码为 2148073494。

在这一行:

如果我尝试使用 X509Certificate2 我也会收到错误:

和错误:

System.InvalidOperationException:证书不包含所需的私钥。

在同一行app.UseOpenIddict();

我使用的证书与用于 https 协议的证书相同。这个可以吗?我的活动令牌随机消失(尝试刷新令牌时我得到 invalid_token )。我发现如果AddEphemeralSigningKey使用会发生这种情况,因为当连接断开时(由于 IIS 空闲超时),所有令牌都丢失了。因此,我正在尝试使用AddSigningCertificate.

还有其他方法吗?谁能告诉我,证书有什么问题?谢谢你。

我正在使用 ASP.NET Core 1.1.1。
我为 .cer 文件添加了 IIS 用户的读取权限。

证书