问题标签 [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 投票
2 回答
848 浏览

openiddict - 注册多个 RedirectUris

有时一个客户端有多个重定向 uri。我们希望能够注册多个RedirectUri值。如果有的话,我们如何做到这一点?

0 投票
1 回答
330 浏览

oauth-2.0 - 使 User.Identity 包含访问令牌有效负载中的电子邮件地址

我们通过自省使用 OAuth 来验证访问令牌。

这主要是有效的。

授权服务器响应connect/introspect良好。

对资源服务器的请求通过了该Authorize属性。这也很好。

虽然User,不包含sub也不包含email属性。它看起来像这样:

我们如何配置我们的资源服务器以在声明中包含subemail属性?

这是我们在 GitHub 上的代码

0 投票
1 回答
211 浏览

asp.net - 处理登录 SPA 应用程序:获取用户信息、管理索赔

语境:

我已经在我的应用程序中实现了 OpenIddict,基于GitHub 自述文件。我目前使用 TokenEndpoint 来登录用户。

尽管调用/api/Account/Info有效并且它返回令牌作为响应,但我需要获取一些有关登录用户的基本数据(用户名、电子邮件、帐户类型)。来自令牌端点的响应没有提供。

我发现了类似 UserinfoEndpoint 的东西:

但是我在http响应中看到的是:

这应该给我一些回报Claims。由于它不返回任何内容,我假设Identity Claims在令牌生成期间没有创建任何内容。

简而言之,我需要知道的:

  1. 是否使用令牌端点正确的方式登录用户?
  2. 我需要自己生成索赔吗?
  3. 我可以自己控制索赔吗?如何控制?
  4. 如何通过 UserInfoEndpoint 使某些声明可见?
0 投票
1 回答
199 浏览

angular - POST 参数被截断

我从 angular 2 应用程序到 asp.net core 1.0 web api 服务器的请求有一个奇怪的问题。服务器正在使用 OpenIddict。

这是请求:

请求标头信息

在 api 端点 /connect/token var request = HttpContext.GetOpenIdConnectRequest();

请求参数

request 变量有几个参数,一个是 Resource 参数,它包含一个 URI。URI 被截断。

结果是 OpenIddict 库无法正确匹配资源,因此无法进行身份验证,因为提供的 URI 与资源 URI 不匹配。

0 投票
1 回答
721 浏览

openid-connect - 设置为允许使用提示=无静默续订

OpenIddict 是否支持静默续订?我们如何配置它?

我目前从这个请求中得到 400:

http://localhost:12345/connect/authorize?client_id=Aurelia.OpenIdConnect&redirect_uri=http%3A%2F%2Flocalhost%3A9000%2Fsignin-oidc&response_type=id_token%20token&scope=openid%20email%20roles%20profile&state=9b394f7c978545a784a41f263f76677d&nonce=4ec03fedb16543ac98be37b540a1b73a&prompt=none

OpenIddict 对此作出回应:

一些客户端,例如 oidc-client-js,不包含提示。有没有办法禁用提示要求?

0 投票
2 回答
1551 浏览

angular - 使用 ASP.NET Core REST API 在 SPA (Angular 2) 中进行社交注册

我已经实现了使用 ASP.NET Core WebApi 作为后端的简单 Angular 2 应用程序。对于身份验证,我添加了“/login”路由,该路由生成 JWT 访问和刷新令牌,这些令牌又由 SPA 存储在 localStorage 中并用于 HTTP 请求。

现在我想集成社交注册功能,以便用户可以使用 ie Facebook 按钮登录。从用户的角度来看,我想将其分为 3 个步骤:

  1. 单击通过 Facebook 注册按钮并重定向到 Facebook 网站(登录并确认我的应用请求)。
  2. 单击确认并重定向到我的 SPA/registration 页面,他的名字已经从 Facebook 个人资料中填写
  3. 填写剩余的字段(如他最喜欢的玩具)并点击“完成注册”

在此注册之后,如果用户再次点击通过 facebook 注册,他将被重定向到 facebook(如果他已经登录),他会自动重定向到服务器路由,检查此类用户是否已经注册,然后将他重定向到 SPA 主页

如何在我的应用程序中正确集成这样的工作流程?注意:我想在我的 Angular2 应用程序中执行身份验证和注册,而不是在不同的身份验证服务器上。

0 投票
1 回答
273 浏览

asp.net-core - 无法请求令牌,请求字段为空

我正在尝试为 SPA 创建 API。我正在使用最新的 .NET Core、MVC 和 EF。我想使用 JWT 对用户进行身份验证,所以我决定使用 openiddict 核心。我已经尝试根据github 页面此博客文章中的示例进行设置。问题是我得到“不支持指定的授权类型”。请求令牌时。

这是邮递员请求的屏幕截图: 邮递员请求

这是我的ConfigureServices方法:

Configure方法:

我正在使用AuthorizationController示例中的 来处理令牌请求。通过观察处理请求request的方法的参数内容,我发现它接收所有字段为空值: Exchange/connect/token调试器

我不知道为什么。根据thisthis blog post,邮递员的请求应该是正确的。哪里有问题?

0 投票
1 回答
2672 浏览

c# - 用谷歌 idToken 交换本地 openId 令牌 c#

我正在使用这个 github 项目https://github.com/openiddict/openiddict-core ,这很棒。但是当用户使用外部身份提供者时,我不知道程序应该是什么,或者如何实现它们,对于这个例子,我将使用谷歌。

我有一个 angular2 应用程序正在运行,带有一个 aspnet 核心 webAPI。我所有的本地登录都可以正常工作,我connect/token使用用户名和密码调用,并返回 accessToken。

现在我需要将 google 实现为外部身份提供者。我已经按照这里的所有步骤来实现一个谷歌登录按钮。当用户登录时,这会打开一个弹出窗口。这是我为我的 google 按钮创建的代码。

现在我有一个来自谷歌的 idToken。在此处找到的谷歌页面上的下一步说我需要验证谷歌 accessToken,我可以这样做,但是如何交换我从谷歌获得的 accessToken,并创建可以在我的应用程序上使用的本地 accessToken?

0 投票
3 回答
2556 浏览

oauth-2.0 - 如何在使用 OpenIddict 请求令牌时添加要返回的自定义声明?

我正在构建 ASP.NET Core 1.1 应用程序(跨平台)并尝试(使用此示例access_token)在请求/connect/token端点时向返回的返回添加自定义声明。
我需要的是不仅返回序列化的声明,access_token而且在响应中返回它们,如下所示:

我在互联网上发现我必须使用AspNet.Security.OpenIdConnect.Server并编写我的提供程序才能做我想做的事情。
没有使用第一个示例的简单方法吗?
我使用的是 OAUth 2.0,授权类型Password,没有 JWT。
不是不使用 JWT 的要求,只是我在 ASP.NET 4.5 中使用过 OAuth

0 投票
1 回答
2836 浏览

asp.net - asp.net 核心中的 OpenIDDict 错误“无法检索 OpenID Connect 请求”

System.InvalidOperationException:无法从 ASP.NET 上下文中检索 OpenID Connect 请求。确保在 'app.UseMvc()' 之前调用 'app.UseOpenIddict()' 并且操作路由对应于通过 'services.AddOpenIddict().Enable[...]Endpoint(... )'。在 OpenIddict.Mvc.OpenIddictModelBinder.BindModelAsync(ModelBindingContext 上下文)

我的启动.cs

更新

改变: