Tag: jwt

.NET JWT令牌validation的命名空间:System vs. Microsoft

我正在尝试使用JWT来validationASP.NET Web API的Node应用程序。 在ASP.NET中,我使用的是.NET 4.5.1和nuget包System.IdentityModel.Tokens.Jwt 5.0.0 我不明白的是,为什么命名空间在Microsoft和System之间混合。 例如: var tokenReader = new JwtSecurityTokenHandler(); tokenReader.ValidateToken(token, new TokenValidationParameters() { ValidateAudience = false }, out validatedToken); 主JwtSecurityTokenHandler位于System.IdentityModel.Tokens.Jwt命名空间中,但TokenValidationParameters类及其依赖项位于Microsoft.IdentityModel.Tokens命名空间中,并且可能与System.IdentityModel.Tokens命名空间中的类似类冲突。 这是设计还是这可能是其他地方版本不匹配的标志?

JWTvalidation失败

我通过设置Payload创建了一个JwtToken,如下所示 var payload = new JwtPayload { {“aud”, “wellmark.com” }, {“iss”, “wellmark” }, {“iat”, DateTime.Now.Ticks }, {“exp”, DateTime.Now.AddDays(90).Ticks }, }; 我必须使用ticks的原因是因为这是获得发布时间和到期时间的整数值的唯一方法。 我同意ticks实际上是一个很长的而不是int,但这是唯一的方法。 现在,当我回来validation令牌时,我正在执行以下操作 var tokenValidationParams = new TokenValidationParameters { IssuerSigningKey = new X509SecurityKey(jwtCert), ValidAudience = “masked”, ValidIssuer = “masked”, IssuerSigningKeyResolver = (string token, Microsoft.IdentityModel.Tokens.SecurityToken securityToken, string kid, TokenValidationParameters validationParameters) => new List { new X509SecurityKey(jwtCert) […]

用于JWT承载认证的.NET Core IssuerSigningKey文件

我正在努力实现(或理解)JWT承载令牌认证的签名密钥。 我希望有人可以帮助我或解释我的错误。 在过去的几周里,我抓了大量的教程,设法让一个自定义的Auth-Controller运行,它发出我的令牌并设法建立JWT承载认证,以validation标题中的令牌。 有用。 我的问题是所有示例和教程要么生成随机或内存(发行者)签名密钥,要么使用硬编码的“密码”字符串或从某些配置文件中获取它们(在代码示例中查找“密码”)。 我的意思是validation设置(在StartUp.cs中): //using hardcoded “password” SecurityKey key = new SymmetricSecurityKey(System.Text.Encoding.ASCII.GetBytes(“password”)); app.UseJwtBearerAuthentication(new JwtBearerOptions { AutomaticAuthenticate = true, AutomaticChallenge = true, TokenValidationParameters = new TokenValidationParameters { ValidateIssuer = true, ValidIssuer = “MyIssuer”, ValidateAudience = true, ValidAudience = “MyAudience”, ValidateLifetime = true, IssuerSigningKey = key } }); 在创建令牌的AuthController中: //using hardcoded password var signingKey = […]

使用Json文件进行Google服务帐户身份validation

我一直关注Googles网站上的Oauth2服务帐户文档。 我也一直在挑选Googles .net客户端库,试图让它工作。 我已经到达了计算机的签名阶段。 Google的隐私密钥如下所示 —–BEGIN PRIVATE KEY—–\nMIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQDcmuyQC8rwWdPQ\nmIdksgzSJbVWTU5MeUxy+HAap3yut9wR/L6KGMJ4FBYcsPmXN5gQAhErybavGoZG\nfS1X1/PCpPVpTCA4749K8gbvuZg1JEIAqMtmHiBBrJj5l8eiekQc8pd7Pq35H4wi\nJYXAJGwggPcttkLBRi0xZzd+jdwL1st+7zRt8nMao/xFibInBBvKwb/gP4mJxlQg\nnRdGO6zgMk+PLTcA5C+gFyPA4SdkylrLib5CJO9123FgcfTJZJTukeHo1v0EfU+4\n3bK8HBZnOFa4DHH4mXhkhgYMjibv4Sr/WCEoomJJwNN04SbUEdyhgpM2rZ3cvx+4\nsmB0SQflAgMBAAECggEAXZ100+/dL7++zh9cHVQdcrRDzprBplw3H/bjg7wdgftN\n7Wgm5214YQKNG6HSWORjqC9oX/+agZYs8w69xjBDJg9ggU2nwuGOGky4utQ0jiCT\nzbnTjsMsBxKaXBiXxBBEhVBBDjDcHQLRMdBggNgz9lskCYb1rxT7qqJVf2PtxCuZ\nuxw3whLMRHXvKosER12sMQgGB/0+Nk86GWCqPigpfu7Ec92V0ffcSUaq3gjIUD54\n67TduTWaRDQNB+j2yQsWQZnqRv+TvIXOjinAI+pPbvCUovtiTSZAoz3EalsiXQ0l\nUqDVx26uzEJqhB2kzvAeApuW2Nd5EPxUnf48c4xh4QKBgQDw01mEChWyENV5CBKU\nMSfY0rpAPtq7ahHRR458ZKtITDBlqiZLMjydI65Rr1XxpQ3pJZALObMdUhbvCDfm\nu4BY/lCCt+hcdt9IICvVZsgXgvb6M+Fj2IbYZcAnOm4T1Z1D3I+pW5NdK2ALQRiK\nWsGINOqWCB9WRd7nhmb/XwWyjQKBgQDqgWht5laDuLMc4qpj9finY4qmk57eT3KG\npzbVlT3h7kv7j/j6e+6o9psrqdf1PXpu9XZi3bPtPbH1fX9x5pZgJQRMP4FGOURY\nQDkJfiOOSN/8Vl0senqkscT7DSbe2BqyqQlSlTB4BBF29p1wxb5Wz5HH2BvYE2zI\ni9B4WJcAuQKBgADnajCasRYoBgUcSKWRwaqIr/ZJxhxp+4Mjl59T6WiuEIhxKQ+j\nMqMMXT0lQVdU3UaAw5enMcrsYfWnvD37ejHbUoYLFq4yLAhjRobYieu8rByoUTJE\nv8zUJPKAv6UHaj20+D0UgOsanJOuPN9YE93lBPRnN2blgD6yPHS88JKJAoGABFyh\n16F4LH0L/9aLes6BcIOeeZi3VMU/iRelInXjL8eh7CzyYZ5agxQLMNW46ZvaIiQ4\nroAXL6t9GubZrwGt/F3T5aMswWShS87uAKoy+RuL5wKoOwKQM24HDvBgr7ZvULFq\nNfoGa8UPmhneNdHHx4+W05PGeM9rr5NCLmrfbCkCgYA0nMvEDIJvU3KA3S1cQ3fs\nVopRJwqRIFFL1cHTWaEyIsxEh6i/zAUc/habK82dN3/ZDn/XvWY14k7VZPsSdDC9\noVlQj2z8DVO2K99Oxyh0VlthtecW8exjzkIPJL4srOSl/dooQZS/7ZZyaRQU/BLI\nMdzKHlUKKXWcUU+Ko8W4+w\u003d\u003d\n—–END PRIVATE KEY—–\n 清理钥匙 首先,我清理一下钥匙 private const string PrivateKeyPrefix = “—–BEGIN PRIVATE KEY—–“; private const string PrivateKeySuffix = “—–END PRIVATE KEY—–“; /// Converts the PKCS8 private key to RSA parameters. This method uses the Bouncy Castle library. private static RSAParameters ConvertPKCS8ToRSAParameters(string pkcs8PrivateKey) { var base64PrivateKey = pkcs8PrivateKey.Replace(PrivateKeyPrefix, “”).Replace(“\r\n”, […]

validationGoogle Id令牌

我正在使用ASP.NET Core为Android客户端提供API。 Android以Google帐户登录,并将ID令牌JWT传递给API作为持票人令牌。 我有应用程序工作,它确实通过了身份validation检查,但我不认为它正在validation令牌签名。 根据Google的文档,我可以将此url称为https://www.googleapis.com/oauth2/v3/tokeninfo?id_token=XYZ123 ,但我无法在服务器端找到相应的挂钩来执行此操作。 另外根据Google文档,我可以以某种方式使用客户端访问API来执行此操作,而无需每次都调用服务器。 我的配置代码: app.UseJwtBearerAuthentication( new JwtBearerOptions() { Authority = “https://accounts.google.com”, Audience = “hiddenfromyou.apps.googleusercontent.com”, TokenValidationParameters = new TokenValidationParameters() { ValidateAudience = true, ValidIssuer = “accounts.google.com” }, RequireHttpsMetadata = false, AutomaticAuthenticate = true, AutomaticChallenge = false, }); 如何让JWTBearer中间件validation签名? 我已经接近放弃使用MS中间件并自己动手了。

ASP.NET核心JWT承载令牌自定义validation

经过大量阅读,我找到了一种实现自定义JWT承载令牌validation器的方法,如下所示。 Starup.cs代码: public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory, IApplicationLifetime appLifetime) { loggerFactory.AddConsole(Configuration.GetSection(“Logging”)); loggerFactory.AddDebug(); app.UseStaticFiles(); app.UseIdentity(); ConfigureAuth(app); app.UseMvcWithDefaultRoute(); } private void ConfigureAuth(IApplicationBuilder app) { var signingKey = new SymmetricSecurityKey(Encoding.ASCII.GetBytes(Configuration.GetSection(“TokenAuthentication:SecretKey”).Value)); var tokenValidationParameters = new TokenValidationParameters { // The signing key must match! ValidateIssuerSigningKey = true, IssuerSigningKey = signingKey, // Validate the JWT Issuer (iss) claim […]

Firebase身份validationasp.net核心

成功登录Firebase后,我们收到了JWT令牌。 为了向我的asp.net应用程序添加授权,我尝试将JwtBearerAuthentication添加到我的中间件。 我尝试了以下JwtBearerOptions: var options = new JwtBearerOptions { Audience = “myApp”, Authority = “https://securetoken.google.com” }; 和 var options = new JwtBearerOptions { Audience = “myApp”, Authority = “https://securetoken.google.com/myApp” }; 不幸的是,这不起作用。 我的Auhtorityurl可能不正确。 有谁知道Auhtorityurl是否正确?

服务应用程序的Google oAuth 2.0(JWT令牌请求)

我正在尝试为此处描述的服务帐户实施Google oAuth 2:在UnityScript上使用https://developers.google.com/accounts/docs/OAuth2ServiceAccount (或C# – 这无关紧要,因为它们都使用相同的Mono .NET类)。 我在这里找到了类似的主题: C#中是否有JSON Web Token(JWT)示例? web-token-jwt-example-in-c但我仍然没有成功。 首先,我已生成标题和声明集(就像在谷歌文档中一样) var header: String = GetJWTHeader(); var claimset: String = GetJWTClaimSet(); 结果是(为清晰起见,用新行分隔): { “ALG”: “RS256”, “典型”: “智威汤逊”} { “ISS”: “425466719070-1dg2rebp0a8fn9l02k9ntr6u5o4a8lp2.apps.googleusercontent.com” “范围”:“ https://www.googleapis.com/auth/prediction ”, “aud”:“ https://accounts.google.com/o/oauth2/token ”, “EXP”:1340222315, “IAT”:1340218715} Base-64编码方法: public static function Base64Encode(b: byte[]): String { var s: String = Convert.ToBase64String(b); s = […]

validationGoogle OpenID Connect JWT ID令牌

我正在尝试升级我的MVC网站以使用新的OpenID Connect标准。 OWIN中间件看起来非常强大,但不幸的是只支持“form_post”响应类型。 这意味着Google不兼容,因为它会在“#”后面的URL中返回所有令牌,因此它们永远不会到达服务器并且永远不会触发中间件。 我试图在中间件中自己触发响应处理程序,但这似乎根本不起作用,所以我有一个简单的javascript文件解析返回的声明并将它们发送到控制器动作进行处理。 问题是,即使我在服务器端获取它们,我也无法正确解析它们。 我得到的错误看起来像这样: IDX10500: Signature validation failed. Unable to resolve SecurityKeyIdentifier: ‘SecurityKeyIdentifier ( IsReadOnly = False, Count = 1, Clause[0] = System.IdentityModel.Tokens.NamedKeySecurityKeyIdentifierClause ), token: ‘{ “alg”:”RS256″, “kid”:”073a3204ec09d050f5fd26460d7ddaf4b4ec7561″ }. { “iss”:”accounts.google.com”, “sub”:”100330116539301590598″, “azp”:”1061880999501-b47blhmmeprkvhcsnqmhfc7t20gvlgfl.apps.googleusercontent.com”, “nonce”:”7c8c3656118e4273a397c7d58e108eb1″, “email_verified”:true, “aud”:”1061880999501-b47blhmmeprkvhcsnqmhfc7t20gvlgfl.apps.googleusercontent.com”, “iat”:1429556543,”exp\”:1429560143 }’.” } 我的令牌validation码遵循开发IdentityServer的优秀人员概述的示例 private async Task<IEnumerable> ValidateIdentityTokenAsync(string idToken, string state) { // New Stuff var […]

在ASP.NET Core中使用Swagger中的JWT(授权:承载)

我正在ASP.NET Core 1.0中创建一个REST api。 我正在使用Swagger进行测试,但现在我为某些路线添加了JWT授权。 (使用UseJwtBearerAuthentication ) 是否可以修改Swagger请求的标头,以便可以测试具有[Authorize]属性的路由?