该RequestUrl是创建与查询字符串参数,例如URL的帮手: var ru = new RequestUrl("https://server/endpoint"); // produces https://server/endpoint?foo=foo&bar=bar var url = ru.Create(new { foo: "foo", bar: "bar" }); 作为Create方法的参数,您可以传入对象或字符串字典.在这两…
JWT令牌使用Base64 URL编码进行序列化. IdentityModel包括Base64Url帮助编码/解码的类: var text = "hello"; var b64url = Base64Url.Encode(text); text = Base64Url.Decode(b64url); 注意 ASP.NET Core通过WebEncoders.Base64UrlEncode和WebEncoders.Base64UrlDecode提供内置支持. github地址…
JWT令牌使用所谓的Epoch或Unix时间来表示日期/时间. IdentityModel包含用于DateTime和DateTimeOffset转换到/来自Unix时间的扩展方法: var dt = DateTime.UtcNow; var unix = dt.ToEpochTime(); 注意 从.NET Framework 4.6和.NET Core 1.0开始,此功能通过DateTimeOffset.FromUnixTimeSeconds和DateTimeOffset.ToUnixTime…
OpenID Connect动态客户端注册的客户端库是作为HttpClient扩展方法提供的. 以下代码发送注册请求: var client = new HttpClient(); var response = await client.RegisterClientAsync(new DynamicClientRegistrationRequest { Address = Endpoint, RegistrationRequest = new RegistrationRequest { Redi…
在比较安全上下文中的字符串(例如比较键)时,应尽量避免泄漏时序信息. 该TimeConstantComparer类可以帮助: var isEqual = TimeConstantComparer.IsEqual(key1, key2); 注意 从.NET Core 2.1开始,此功能通过CryptographicOperations.FixedTimeEquals内置 github地址…
欢迎使用IdentityModel文档! 第一部分 协议客户端库 第1章 发现端点(Discovery Endpoint) 第2章 授权端点(Authorize Endpoint) 第3章 结束会话端点(EndSession Point) 第4章 令牌端点(Token Endpoint) 第5章 令牌自省端点(Token Introspection Endpoint) 第6章 令牌撤销端点(Token Revocation Endpoint) 第7章 UserInfo端点(UserInfo En…
IdentityServer是中间件和服务的组合.所有配置都在您的启动类中完成. 18.1 配置服务 您可以通过调用以下方法将IdentityServer服务添加到DI系统: public void ConfigureServices(IServiceCollection services) { var builder = services.AddIdentityServer(); } 您可以选择将选项传入此调用.有关选项的详细信息,请参见此 这将返回一个构建器对象,该构建器对象又有许多方便的方…
使用OAuth 2.0,OpenID Connect和声明时,声明类型和protocoal值有很多"魔术字符串".IdentityModel提供了几个常量字符串类来帮助它. 10.1 OAuth 2.0和OpenID Connect协议值 本OidcConstants类有补助的类型,参数名称,错误名称等所有的值 10.2 JWT声明类型 本JwtClaimTypes类在OpenID Connect,JWT和OAuth 2.0规范中的所有标准要求的类型-其中许多人也都聚集在IANA. g…
OpenID Connect发现端点的客户端库作为httpclient的扩展方法提供.该GetDiscoveryDocumentAsync方法返回一个DiscoveryResponse对象,该对象具有发现文档的各种元素的强类型和弱类型访问器. 在访问文档内容之前,应始终检查IsError和Error属性. 例: var client = new HttpClient(); var disco = await client.GetDiscoveryDocumentAsync("https://de…
对于大多数情况,OAuth 2.0和OpenID Connect授权端点的GET请求需要具有许多查询字符串参数. 虽然您可以使用任何方法创建带参数的URL来创建正确的字符串,但RequestUrl类是完成此任务的简单帮助程序. 特别是,您可以使用CreateAuthorizeUrl扩展方法为授权端点创建URL - 它支持最常用的参数: /// <summary> /// Creates an authorize URL. /// </summary> /// <param n…