.NET 6问题:承载器错误="invalid_token"
我正在使用.NET 6构建API,但我遇到了这个错误.我获得了带有登录名的令牌,然后我添加了该令牌,但总有401:未经授权的错误. 注意:我得到了携带者错误=" invalid_token",但没有描述. 这是我的代码; program.cs: using Autofac; using Autofac.Extensions.DependencyInjection; using Business.DependencyResolvers.Autofac; using Core.Utilities.Security.Encryption; using Core.Utilities.Security.Jwt; using Microsoft.AspNetCore.Authentication.JwtBearer; using Microsoft.IdentityModel.Tokens; using Microsoft.OpenApi.Models; var build
0 2024-04-15
编程技术问答社区
.Net核心JWT认证与自定义API密钥中间件
我有一个.NET Core 2.0应用程序,该应用程序使用JWT代币授权用户. 这一切都很好,但是我想拥有某种API关键机制来允许其他应用程序集成,但我似乎无法将其与当前的身份验证一起使用. 代码: startup.cs public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory, IMemoryCache cache, IServiceProvider serviceProvider) { app.UseAuthentication(); ApiKeyMiddlewear(app, serviceProvider); app.UseMvc(routes => { routes.MapRoute( name: "defaul
0 2024-04-15
编程技术问答社区
自己发布JWT令牌与使用Web API的IdentityServer4(OIDC)的对比
support.html 我当前在Web API中发出代币,并使用JwtSecurityToken>使用标准ASP.NET核心中间件调用AddJwtBearer来验证令牌.它可以正常工作. 在上述方法上,使用OpenID Connect(通过IdentityServer4)会给我什么优势?如何回答自己的问题"我需要openID连接吗?" 从我对OpenID Connect的基本理解中,它用于允许第三方访问您的API.但是我为自己而不是为第三方制作API,我不知道为什么我应该偏爱身份服务器/OpenIddict,而不是简单的方法. 我读到,如果我想单个签名,我应该使用此签名,但是JWT本身并不绑定到任何特定的域,我可以只使用纯JWT(它们是独立的) 我知道它实现了发行令牌的某种标准. (协议).如果我想将一些API暴露于第三方,那可能会很好.但是对于内部API?值得使用吗? 这是我当前的验证流( https://jonhilton.net/2017/10
0 2024-04-15
编程技术问答社区
在ASP.NET核心Web API授权期间生成JWT令牌的错误
我有一个Web API项目,我可以通过该项目进行注册并登录.在授权期间,我应该获得一个令牌,出现错误: An unhandled exception has occurred while executing the request. System.TypeInitializationException: The type initializer for System.IdentityModel.Tokens.Jwt.JsonExtensions' threw an exception. System.TypeLoadException: Could not load type 'Microsoft.IdentityModel.Json.JsonConvert' from assembly 'Microsoft.IdentityModel.Tokens, Version=7.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'
0 2024-04-15
编程技术问答社区
如何在控制器方法中使JWT令牌授权成为可选项
我在我的ASP.NET Core 2 Web应用程序中使用JWT令牌 如果JWT令牌失败,我仍然希望击中控制器方法,但是ASP.NET Identity User对象将仅为null.当前,如果身份验证失败,则无法输入控制器方法,因此我无法在该方法中应用逻辑来处理我想处理的非身份验证用户,而不是将其处理为访客. 我的代码: startup.cs public void ConfigureServices(IServiceCollection services) { services.AddAuthentication() .AddJwtBearer(cfg => { cfg.TokenValidationParameters = new TokenValidationParameters() {
0 2024-04-15
编程技术问答社区
如何在ASP.NET WebApi的每个请求中对JWT令牌进行自定义验证?
使用携带者令牌对Web API进行认证时,是否可以向每个请求添加自定义验证? 我正在使用以下配置,并且应用程序已经正确验证了JWT令牌. app.UseOAuthAuthorizationServer(new OAuthAuthorizationServerOptions { AuthenticationType = "jwt", TokenEndpointPath = new PathString("/api/token"), AccessTokenFormat = new CustomJwtFormat(), Provider = new CustomOAuthProvider(), }); app.UseJwtBearerAuthentication(new JwtBearerAuthenticationOptions { AllowedAudiences = new[] { "all" }, IssuerSecurit
0 2024-04-14
编程技术问答社区
System.IdentityModel.Tokens.JwtSecurityToken自定义属性
我的Authserver当前正在使用以下代码生成JWTSecurityToken: var token = new JwtSecurityToken(_issuer, audienceId, data.Identity.Claims, issued.Value.UtcDateTime, expires.Value.UtcDateTime, signingKey); var handler = new JwtSecurityTokenHandler(); var jwt = handler.WriteToken(token); 有效载荷看起来像这样: { "unique_name": "myUserName", "sub": "myUserName", "role": "API_User", "iss": "Automation", "aud": "099153c2625149bc8ecb3e85e03f0022", "exp": 148605673
0 2024-04-14
编程技术问答社区
验证JWT签名时出现SecurityTokenSignatureKeyNotFoundException
我正在尝试为我的组织实施OpenID连接规范.我正在使用Microsoft的OWIN实现OpenID Connect在测试依赖方应用程序中来验证我对协议的实现. 我已经暴露了以下元数据文档: { "issuer": "https://acs.contoso.com/", "authorization_endpoint": "http://localhost:53615/oauth2/auth", "token_endpoint": "http://localhost:53615/oauth2/token", "userinfo_endpoint": "http://localhost:53615/connect/userinfo", "jwks_uri": "http://localhost:53615/connect/keys", "ui_locales_supported": [ "en-GB" ] } 签名密钥被视为此文档:
0 2024-04-14
编程技术问答社区
为什么从V6升级到IdentityModel V7后,我会获得IDX20803错误?
升级后Microsoft.IdentityModel.Tokens和System.IdentityModel.Tokens.Jwt> 7.0.0,我得到了此错误: IDX20803:无法从:'https://example.com/realms/development/.well-nown/openid-configuration获得配置. 无法加载类型'Microsoft.IdentityModel.json.jsonconvert'来自汇编'Microsoft.InderityModel.tokens,版本= 7.0.0.0,Culture = Neutral,public Keytry,publicKeyToken = 31bf3856ad364e35'.无法加载从汇编'Microsoft.InderityModel.tokens,版本= 7.0.0.0,Cultur = Neutral,public Keytoken = 31BF3856AD364EE35'. =>
0 2024-04-14
编程技术问答社区
在ASP.NET Core 2.0+中,JwtBearerOptions.SaveToken属性的作用是什么?
Microsoft Docs 只有此描述: 定义是否应将携带者令牌存储在 Authentication Properties 成功授权后. 我想知道保存JWT是否允许您以某种方式撤销它,但是我读到的有关JWTS的每个地方都说它们是不可撤销的.您将如何将JWT存储在Authentication Properties中? 解决方案 将JWT存储在AuthenticationProperties中允许您从应用程序中的其他地方检索它. 例如,使用 GetTokenAsync 诸如此类的动作内部: public async Task SomeAction() { // using Microsoft.AspNetCore.Authentication; var accessToken = await HttpContext.GetTokenAsync("access_token"); // ... } 例如
0 2024-04-14
编程技术问答社区
c# 如何验证签名JWT?
我有一个令牌,一个包含公共密钥的文件,我想验证签名. 我试图根据此 . 但是,dododedCrypto和解码符号不匹配. 这是我的代码: public static string Decode(string token, string key, bool verify) { var parts = token.Split('.'); var header = parts[0]; var payload = parts[1]; byte[] crypto = Base64UrlDecode(parts[2]); var headerJson = Encoding.UTF8.GetString(Base64UrlDecode(header)); var headerData = JObject.Parse(headerJson); var payloa
0 2024-04-14
编程技术问答社区
Azure B2C:如何获得JWT令牌中的 "组 "要求
在Azure B2C中,我曾经能够通过关注 打开老式的Azure Manager( https://manage.windowsazure.com ) 在B2C注册我的申请 下载应用程序的B2C清单 在清单中,将" GroupMembershipclaims"的条目更改为 " groupmembershipclaims":" SecurityGroup", 再次上传更改的B2C清单 问题 这在过去效果很好(大约一个月前,我相信...),但不再了.有关详细信息,请参见下文... 我尝试了Sofar 计划A:使用Azure Manager 按照上面的已知良好食谱. 不幸的是,这不再起作用 - 当该客户端试图用B2C对我进行身份验证时,我会遇到以下错误: AADB2C90068:提供的ID'032FE196-E17D-4287-9CFD-25386D49C0D5'提供的提供的应用程序无效.请使用通过B2C门户创建的应用程序,然后重试"
0 2024-04-14
编程技术问答社区
JWT错误IDX10634:无法创建SignatureProvider C#
我正在尝试运行我的应用程序,但它会遇到以下错误: system.notsupportedException hresult = 0x80131515消息= idx10634: 无法创建Signature Provider.算法:'[PII被隐藏 默认.将" showpii"标志设置为sidentitymodeleventsource.cs true 揭示它.设置 sienditymodeleventsource.cs中的" showpii"旗 不支持. 其中 算法是RS256 它坚持执行此指令:var sectoken = tokenHandler.CreateToken(tokenDescriptor); 这是什么意思?我的代码中出了什么问题?我该如何解决? 这是我的代码: using System.Security.Claims; using System.Text; using System.Threading.Tasks; //... p
0 2024-04-14
编程技术问答社区
以数组形式向JWT添加索赔?
使用智商JWT身份验证资源所有者流,我将JWT的索赔部分用于客户消费. 我的问题是,如果可以在身份服务器中添加索赔并将其解码为客户端中的数组. 没有数组类型的索赔. 作为解决方法: var user = IdentityServerPrincipal.Create(response.UserName, response.UserName); user.Identities.First() .AddClaims( new List() { new Claim(ClaimTypes.Name, response.UserName), new Claim(ClaimTypes.Email, response.Email), new Claim(FullName, response.FullName), new Cl
0 2024-04-14
编程技术问答社区
ASP.NET Core WebAPI Cookie + JWT认证
我们有一个带有API后端的水疗中心(ASP.NET Core webapi): spa在app.mydomain.com上听,app.mydomain.com/API 上的API 我们使用JWT进行内置Microsoft.AspNetCore.Authentication.JwtBearer的身份验证;我有一个Controller app.mydomain.com/API/auth/jwt/login可以创建令牌.水疗中心将它们保存到本地存储中.所有人都可以完美.安全审核后,我们被告知要切换cookie的本地存储. 问题是,app.mydomain.com/API上的API由SPA使用,但也由移动应用程序和多个客户服务器-2服务器解决方案使用. 因此,我们必须保持JWT,但要添加cookie.我发现了几篇文章,这些文章将cookie和JWT结合在不同的控制器上,但我需要它们在每个控制器上并排工作. 如果客户端发送cookie,请通过cookie进行身份验证.如
0 2024-04-14
编程技术问答社区
如何在ASP.NET Core中用不记名令牌默认保护所有控制器?
我在我的应用程序中添加了JWT中间件: app.UseJwtBearerAuthentication(options => { options.AutomaticAuthenticate = true;} ) 理想情况下,我想实现的目标是,默认情况下所有控制器的操作都受到保护(在以前的ASP.NET中有过滤器),我会在我想要公开或授权的那些匿名(" Somepolicy")上匿名(" Somepolicy")如果我想要其他策略,但是我希望在没有令牌的情况下完全无法访问API.我该如何在ASP.NET核心中执行此操作? 解决方案 以.Net 6开始,我们可以执行此操作(如果使用Microsoft推荐的最小托管模型): app .MapControllers() .RequireAuthorization(); // This will set a default policy that says a user has to be authenticated
0 2024-04-14
编程技术问答社区
在独立的Web Api上进行JWT验证
我有一个Core 3.1 Web API是vur.js客户端,它使用JWT令牌进行安全.这一切都很好.我现在必须在解决方案中添加第二个Web API.我的问题是客户端访问第二个Web API并发送令牌时,它是从第一个收到的,我将如何验证该令牌?我真的不想构建身份验证服务器. 回答Chetan Ranpariya try { var tokenHandler = new JwtSecurityTokenHandler(); var key = Encoding.ASCII.GetBytes(_appSettings.Secret); tokenHandler.ValidateToken(token, new TokenValidationParameters { ValidateIssuerSigningKey = true, IssuerSigningKey = new SymmetricSecurityKey(key)
0 2024-04-14
编程技术问答社区
在ASP.Net核心中使用自定义表格的ASP.Net身份认证内置函数
我正在使用.NET 2.1框架上的ASP.NET Core Web API 2 我有自定义的配置者和认可表,与桥接表Appuserroles 链接 我的主要问题是我想使用[Authorize(Roles = "UserRole")] 由于user.Identities工作正常,我从User.Identity.Name中获取用户ID,我认为有某种方法可以设置角色并在控制器请求之前检查它们,或者使用User.IsInRole("UserRole")检查控制器内部检查. 是否可以以某种方式重建或过载.IsInRole("UserRole") .IsInRole("UserRole") [Authorize(Roles = "UserRole")]属性背景功能,因此我可以编写自己的逻辑来检查用户权限吗?或将我的表设置为要使用的默认表,以便它可以在自逻辑上使用. 对于我的任务,速度与安全性一样重要. 我愿意接受建议,如果有其他方法,但我的意思也是要更好地理解这些功能. 解决方
0 2024-04-14
编程技术问答社区
火碱地认证 asp.net core
成功登录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" }; 不幸的是,这是不起作用的.我的权威URL可能不
0 2024-04-14
编程技术问答社区
Jwt承载器和依赖性注入
我正在尝试配置我的JWT携带者发行器钥匙,但是通常,在生产中,我使用KeyManager包裹的Azure键保管库. KeyManager类是在依赖注入中配置的,但是,在ConfigureServices方法中,我无法使用它(显然),但是如果我不能使用它,则无法检索我的密钥. 目前,我的解决方案是建立临时服务提供商并使用它,但我认为不是最新的(我需要创建两个单例副本,而不是最好的). services.AddAuthentication(options => { options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme; options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme; options.DefaultSignInScheme = JwtBearerDefaults.Au
0 2024-04-13
编程技术问答社区