问题标签 [identitymodel]

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 回答
1402 浏览

asp.net - 将事件侦听器附加到 Microsoft.IdentityModel.Logging

这是一个使用框架 4.7 的 asp.net 应用程序。

我正在尝试在 asp.net 应用程序中附加到 Microsoft.IdentityModel.Logging.IdentityModelEventSource.Logger(我在 OWIN 启动类中使用 OpenIdConnect,我遇到了问题,希望附加到此记录器可能会给我一些线索)。

在我的 OWIN Startup 类中,在 Configuration() 方法中,我有以下内容:

在我的 Listener_EventWritten 方法中,我有以下内容:

此方法会触发很多次,但“e.Message”始终为空。我究竟做错了什么?

0 投票
1 回答
268 浏览

identityserver4 - 带有“native.hybrid”客户端的 WinFormsSample 不再起作用?

如果我将此示例中的客户端更改为“native.hybrid” https://github.com/IdentityModel/IdentityModel.OidcClient.Samples/tree/master/WinFormsWebView

并设置 Flow = OidcClientOptions.AuthenticationFlow.Hybrid

然后登录到 IS4 工作(延迟 5 秒后),但我的默认 Web 浏览器中出现了一个新的登录表单。

使用客户端“interactive.public”可以正常工作。我的问题是我的原生寡妇应用程序应该使用哪个流程?我的意思是它是“OpenID Connect 混合流程”,请参阅https://identityserver4.readthedocs.io/en/latest/topics/grant_types.html

如果使用混合流,如何适应这个样本?

0 投票
1 回答
2951 浏览

identityserver4 - 使用 Identity4 和 OidcClient 的授权代码流

对于 Winforms 桌面应用程序,我将使用 PKCE 的授权代码流。作为身份提供者,我使用IdentityServer和客户端库 OicdClient。下一步我必须决定使用哪个浏览器进行用户登录:

对于 SystemBrowser 来说,流程的简单/清晰的实现。对于 Extended WebBrowser 来说,有些用户可能没有 SystemBrowser。但是 WebBrowser 是一个旧的 IE 版本?是否允许用于安全身份验证?

尽管如此,我还是尝试了“Extended WebBrowser”示例,并偶然将它集成到我的原型环境中,并使用自己的 IS4 服务器。因此,我需要对代码流和重定向有所了解。我已经用纯 .Net 类实现了这个授权代码流,但是使用 OicdClient 让我有点困惑(一开始就像一个黑盒子)。

我的问题是重定向如何与这个库一起工作,谁负责重定向,谁负责接收带有代码的重定向(以交换访问令牌)?

代码流包含以下步骤(没有详细信息,如 clientID、PKCE ...):

  1. 向 IS4 发送代码请求
  2. 带有登录页面的 IS4 响应(显示在浏览器中)
  3. 成功登录后 IS4 发送到重定向 URL 的代码
  4. HttpListener 使用代码接收此重定向,并且
  5. 使用代码向 IS4 发送请求以接收访问令牌

使用 OidcClient 并使用自动模式:

这对我来说太神奇了。只有调用 LoginAsync() 才能使其工作......

重要的一点似乎是带有 IBrowser 接口的选项的 Browser 属性及其对该方法的实现:

如果我尝试映射到流程步骤:

  1. 登录页面:OpenBrowser(options.StartUrl);
  2. 重定向将由 IS4 完成?示例中的 SystemBrowser 不执行此操作。
  3. 接收代码:await listener.WaitForCallbackAsync();

1 和 5 可能是由 OicdClient 完成的。这个例子很清楚,需要确认重定向是由IS4完成的。

另一个示例扩展 WebBrowser中的实现

  1. 完成:browser.Navigate(options.StartUrl);
  2. 由 IS4 重定向
  3. 接收事件句柄中的代码:NavigateError ???

这里有什么问题吗?在 IS4 上调用 AccountController.Login 来调用 /connect/authorize/callback? 使用redirect_uri。但这并没有出现在 BeforeNavigate2 中。相反,NavigateError 事件出现在结果设置为:

0 投票
1 回答
143 浏览

identityserver4 - 使用 Identity4 和 OidcClient 的授权代码流的 netstandard 示例

是否有任何用于使用 Identity4 和 OidcClient 的授权代码流的 netstandard 2.0 示例?像仅在 .net 核心中的SystemBrowser

0 投票
1 回答
137 浏览

angular - 如何从 asp.net core 3.0 / angular 应用程序验证用户并授权该应用程序使用 IdentityServer4 进行 api 访问

我已经使用IdentityModel.OidcClientIdentityServer4为 WinForms 应用程序实现了这个任务。下一个任务是为 Angular 做这件事。ID4 的文档说,本机应用程序和 SPA 可以使用相同的流程进行处理,即“授权代码”流程作为交互式客户端。那么是否可以使用 Angular 中第一个实现的 dll(.net 标准 2.0)?它使用 OidcClient 在系统浏览器中登录,接收带有代码的重定向 uri,最后从代码中获取访问令牌。
或者我应该使用 OAuth2.0 的 JavaScript 实现,参见oidc-client.js

0 投票
1 回答
358 浏览

c# - oauth2:“userinfo 端点缺少子声明”Microsost 开放 ID 连接 - OIDC 客户端

我正在使用 microsoft OidcClientfor oauth2.0 for google 帐户,我得到了

“用户信息端点缺少子声明”错误。”

谁能建议我是否遗漏了什么或做错了什么。

我收到了 6 种不同类型的索赔,但我没有得到JwtClaimTypes.Subject "sub"图书馆正在寻找的索赔。 在此处输入图像描述

谁能帮助或建议如何解决这个问题?

0 投票
1 回答
905 浏览

c# - .NET 生成无效的 JWT 令牌

我正在使用 IdentityModel.Tokens.Jwt 在我的 WindowsService 中生成 JWT 令牌,如下所示:

然后,我正在编写该令牌JwtSecurityTokenHandler并将其发送到 WebAPI 控制器的请求中:

在 API 方面,我正在尝试验证令牌:

这会引发以下错误:

IDX12741:JWT:'[PII 已隐藏。有关更多详细信息,请参阅 https://aka.ms/IdentityModel/PII。] '必须具有三个段 (JWS) 或五个段 (JWE)。'

还有一个生成令牌的例子,它实际上看起来像一次发送的两个令牌,这让我感到困惑:

有什么建议吗?

0 投票
2 回答
3004 浏览

c# - 使用带有 IdentityModel 4.1.1 的刷新令牌请求访问令牌

我正在为 OAuth2.0 使用 IdentityModel 4.1.1 现在,我在创建 TokenClient 实例期间卡住了,该实例用于使用刷新令牌请求新的访问令牌。

这是我正在做的代码,

IdentityModel4.1.1 pkg提供的TokenClient类下面,

上面的类表示需要将 HttpMessageInvoker 作为第一个参数传递,但我对此完全置若罔闻。我还提到了 IdentityModel文档,但没有得到任何线索

0 投票
3 回答
5744 浏览

asp.net-mvc - 找不到 IdentityServer4 的 DiscoveryClient

尝试访问发现客户端以访问其他端点并遵循 http://docs.identityserver.io/en/aspnetcore1/endpoints/discovery.html

在 .Net 7.5 MVC 应用程序中安装了 IdentityModel nuget 包。但是找不到DiscoveryClient

有什么变化IdentitymodelIdentityServer4

此外,无法找到“Tokenclient”的参数。

0 投票
0 回答
961 浏览

c# - IdentityModel - RequestClientCredentialsTokenAsync

当我从单元测试调用它时,这种RequestClientCredentialsTokenAsync生成令牌(oauth2)的方法对我来说很好,但是从 API MVC .Net Framework 4.6.1 我有这个异常:(对不起,异常是法语)

<Error> <Message> Une erreur s'est produite lors de l'envoi de la demande. </Message> <ExceptionMessage> Une erreur s'est produite lors de l'envoi de la demande. </ExceptionMessage> <ExceptionType>System.InvalidOperationException</ExceptionType> <StackTrace> à JwtBearerAuthentication.JwtAssertionTokenManager.AcquireAccessToken() dans C:\Users\S851029\source\repos\Sources\AF.EFormSignature.JwtBearerAuthentication\JwtAssertionTokenManager.cs:ligne 55 à JwtBearerAuthentication.JwtAssertionTokenManager.GetAccessToken(Boolean forceRefresh) dans C:\Users\S851029\source\repos\Sources\AF.EFormSignature.JwtBearerAuthentication\JwtAssertionTokenManager.cs:ligne 28 à AF.EFormSignature.Web.Controllers.IdentiteNumeriqueController.RecuperationStatutIdentite() dans C:\Users\S851029\source\repos\Sources\AF.EFormSignature.Web\Controllers\IdentiteNumeriqueController.cs:ligne 72 à lambda_method(Closure , Object , Object[] ) à System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor.<>c__DisplayClass10.<GetExecutor>b__9(Object instance, Object[] methodParameters) à System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor.Execute(Object instance, Object[] arguments) à System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ExecuteAsync(HttpControllerContext controllerContext, IDictionaryemplacement précédent au niveau duquel l'exception a été levée --- à System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)à System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)à System.Web.Http.Filters .AuthorizationFilterAttribute.d__2.MoveNext() --- Fin de la trace de la pile à partir de l'emplacement précédent au niveau duquel l'exception a été levée --- à System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务) à System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) à System.Web.Http.Controllers.ExceptionFilterResult.d__0.MoveNext() 出现错误。Une erreur s'est produite lors de l'envoi de la demande。System.Net.Http.HttpRequestException → System.Runtime。CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)à System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)à IdentityModel.Client.HttpClientTokenRequestExtensions.d__7.MoveNext() 发生错误。无法从服务器远程 System.Net.WebException à System.Net.HttpWebRequest.EndGetRequestStream(IAsyncResult asyncResult, TransportContext& context) à System.Net.Http.HttpClientHandler.GetRequestStreamCallback(IAsyncResult ar) 发生错误。Une tentative de connexion a échoué car le parti connecté n'a pas répondu convenablement au-delà d'une certaine durée ou une connexion établie a échoué car l'hôte de connexion n'a pas répondu 171.18.28.75:443 System.Net。 Sockets.SocketException à System.Net。