存储X.509证书的常见位置是Windows X.509证书存储区.商店的原始API有点神秘(在.NET Framework和.NET Core之间也略有变化). X509类是一个简化的API从所述存储区加载证书.以下代码从个人计算机存储按名称加载证书: var cert = X509 .LocalMachine .My .SubjectDistinguishedName .Find("CN=sts") .FirstOrDefault(); 您可以从计算机或用户存储和My,Addres…
注意 对于任何先决条件(例如模板),首先要查看概述. 接下来,我们将添加对外部认证的支持.这非常简单,因为您真正需要的是ASP.NET Core兼容的身份验证处理程序. ASP.NET Core本身支持Google,Facebook,Twitter,Microsoft Account和OpenID Connect.此外,你可以找到很多其他的认证供应商实现在这里. 12.1 添加Google支持 要使用Google进行身份验证,首先需要向他们注册.这是在他们的开发者控制台完成的.通过将/signi…
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…
在比较安全上下文中的字符串(例如比较键)时,应尽量避免泄漏时序信息. 该TimeConstantComparer类可以帮助: var isEqual = TimeConstantComparer.IsEqual(key1, key2); 注意 从.NET Core 2.1开始,此功能通过CryptographicOperations.FixedTimeEquals内置 github地址…
该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方法的参数,您可以传入对象或字符串字典.在这两…
使用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…
OAuth 2.0设备流设备授权的客户端库是作为HttpClient扩展方法提供的. 以下代码发送设备授权请求: var client = new HttpClient(); var response = await client.RequestDeviceAuthorizationAsync(new DeviceAuthorizationRequest { Address = "https://demo.identityserver.io/connect/device_authorize&qu…
OpenID Connect动态客户端注册的客户端库是作为HttpClient扩展方法提供的. 以下代码发送注册请求: var client = new HttpClient(); var response = await client.RegisterClientAsync(new DynamicClientRegistrationRequest { Address = Endpoint, RegistrationRequest = new RegistrationRequest { Redi…
OAuth 2.0令牌撤销的客户端库是作为扩展方法提供的HttpClient. 以下代码撤消撤销端点处的访问令牌令牌: var client = new HttpClient(); var result = await client.RevokeTokenAsync(new TokenRevocationRequest { Address = "https://demo.identityserver.io/connect/revocation", ClientId = "cl…