JwtBearerAuthentication安全处理异常
使用JWTBEARERATHENTICATION MIDERDWARE时,在调用JWTSecurityTokenHandler.WritEtoken()之后,将RSAcryptoServiceProvider和其他对象处置在签名中.我的问题对此问题非常相似:第一个请求有效,但是任何后续请求都会失败.该功能在RC2中效果很好...但是现在我们已经升级到1.0,WritEtoken导致: System.ObjectDisposedException was unhandled by user code HResult=-2146232798 Message=Safe handle has been closed ObjectName="" Source=mscorlib StackTrace: at System.Security.Cryptography.Utils._GetKeyParameter(SafeKeyHandle hKey, UInt32 paramID) at Sys
8 2024-04-26
编程技术问答社区
AcquireTokenAsync没有返回新的令牌
我的WebAPI应用程序在启动时从服务中获得了令牌.然后将使用此令牌在共享的HTTP客户端中以防止端口耗尽. 当这个令牌即将到期时,我想获得一个新的,并将其保存在我的服务中以重复使用. 在我的实施中,检索一个令牌 - 但是它具有与原始令牌相同的到期: // Retrieve the token and assign to AuthenticationResult private async Task GetAPIToken() { AuthenticationContext authContext = new AuthenticationContext(Authority); var clientCredential = new ClientCredential(clientId, clientSecret); // Same token after multiple calls
2 2024-04-26
编程技术问答社区
通过Web API在Office 365中创建邮件草稿
我有一个带有EF的Web API后端,并使用Azuread来验证我的(Office365)Web应用程序的用户. 现在我想在我的网络API中创建草稿邮件,但我不知道从哪里开始. 我可以在网络API中调用Office 365邮件API吗? POST https://outlook.office.office365.com/api/ P> 但是如何通过它传递身份验证令牌? 这是我现在使用的验证配置,它适用于其他数据请求. public static class Auth { internal static void ConfigureCors(this IAppBuilder app) { // TODO: Configure to only allow ESS Web UI app.UseCors(CorsOptions.AllowAll); } internal static void Confi
8 2024-04-25
编程技术问答社区
当同时配置 Cookie 身份验证时,.Net SignalR 使用 JWT 承载器身份验证
我有一个ASP.NET 5 WebApp,它是较大系统的一部分,并使用cookie Authentication进行浏览器请求. 我想增加请求数据并在某些Windows服务上执行特定操作的功能,这些Windows服务也是整个系统的一部分,并在几个单独的PC上执行.我想为此使用SignalR. 然后,Windows服务是作为我们ActiveDirectory的一部分的专用服务身份运行的.由于服务不得将其用户凭据存储在代码或本地配置文件中,因此他们要求使用与Windows Authentication一起使用的API为Web应用程序提供身份验证令牌. 然后,在与Web应用程序建立SignalR连接时,服务将使用从API接收到的令牌对Web应用程序进行身份验证.这一般都在起作用. Web应用程序的身份验证配置为: services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
0 2024-04-25
编程技术问答社区
用于ASP.Net Core的自定义承载令牌授权
这是自定义携带者令牌授权机制的可接受实现吗? 授权属性 public class AuthorizeAttribute : TypeFilterAttribute { public AuthorizeAttribute(): base(typeof(AuthorizeActionFilter)){} } public class AuthorizeActionFilter : IAsyncActionFilter { private readonly IValidateBearerToken _authToken; public AuthorizeActionFilter(IValidateBearerToken authToken) { _authToken = authToken; } public async Task OnActionExecutionAsync(ActionExecutingCont
4 2024-04-22
编程技术问答社区
向承载令牌json添加更多的值
我想在用户名成功登录后返回以在我的Web应用程序上的右上角显示.我想将其发送给持有令牌回报的JSON.要生成令牌身份验证,我正在使用ASP.NET Web API和Owin Middlehawe. { "access_token": "blah", "token_type": "bearer", "expires_in": 599 } 我希望返回像这样 { "access_token": "blah", "token_type": "bearer", "expires_in": 599, "displayusername":"Hi Mundo" } 我尝试了主张,但没有给出我想要的结果. 我尝试使用Authentication Properties,但不起作用 public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwn
8 2024-04-22
编程技术问答社区
用c#生成承载令牌
我有一个Web应用程序.我的要求是,我需要在每个登录中生成OAuth2承载令牌.目前,我们正在使用智商来生成令牌,但是此过程每次都需要将近7秒的时间来生成令牌.有什么办法可以在不使用thinktecture的情况下生成令牌? 解决方案 我遵循下面的文章 http://bitoftech.net/2014/06/01/token-case-basion-authentication-authentication-asp-net-web-api-2-opi-2-owin-asp-net-intity/ 下载了他们的源代码并检查了.他们有关于如何创建令牌的很好的例子. 其他解决方案 如果您使用Individual User Accounts创建了一个新的ASP.NET Web Application - > Web API.看看App_Start - > Startup.Auth.cs. 它应该包含类似的东西: PublicClientId = "self";
6 2024-04-20
编程技术问答社区
从Swagger UI进入标头的JWT令牌,作为承载令牌不起作用
我正在生成JWT令牌Web API核心应用程序.在应用程序中,我正在使用Swagger和应用的承载令牌身份验证.但是当我尝试通过Swagger UI的通行证代币时,我会遇到401个错误.请请任何人帮助我 services.AddSwaggerGen(c => { c.SwaggerDoc("v1", new OpenApiInfo { Title = "My API", Version = "v1" }); c.SwaggerDoc("v2", new OpenApiInfo { Title = "My API", Version = "v2" }); c.AddSecurityDefinition("Bearer", new OpenApiSecurityScheme { In = ParameterLocation.Header,
2 2024-04-20
编程技术问答社区
.Net核心API JWT令牌验证
如下所述,在.NET Core Web API中实现JWT携带者令牌验证: services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme) .AddJwtBearer(opt => { opt.Audience = Configuration["AAD:ResourceId"]; opt.Authority = $"{Configuration["AAD:Instance"]}{Configuration["AAD:TenantId"]}"; }); 怀疑这是上述代码仅验证听众和权威吗?否则它将验证所有参数,例如有效期和签名等? 我们需要明确验证签名以检查有效载荷已被篡改吗? 解决方案 我想您正在寻找: 在这里,Z
4 2024-04-19
编程技术问答社区
在ASP.NET WebAPI中检索承载令牌
我有一个具有启用身份验证的Web API(承载令牌).这是由客户端应用程序调用的,我想保护它免受匿名用法的侵害,因此我想创建一个用户并为其创建一个携带者令牌. 我可以通过调用 register 和令牌方法来创建令牌,但是我想从代码中执行此操作. 据我所知,载体令牌未存储在数据库中.可以使用ASP.NET身份API以某种方式检索它? 我也想从代码创建此用户并在某个地方保存令牌,因为我需要将数据库部署到多个服务器. 解决方案 我不建议您使用这种方法,如果您只有一个客户会与您的API交谈,我的理解是您需要发行非常长的活访问访问令牌,并且可以继续使用此代币要访问后端API,对吗? 如果这个令牌被盗,该怎么办?您无法撤销访问令牌,因此它像您的主密钥(密码)一样. 我的建议是将Oauth刷新令牌与访问令牌一起使用.这取决于客户端的类型,您可以在此处检查 http://bitoftech.net/2014/07/07/16/enable-eenable-oaauth-oaut
2 2024-04-19
编程技术问答社区
如何从jwt令牌中获取 "exp "并与当前时间进行比较,以检查令牌是否过期?
我正在使用System.IdentityModel.Tokens.Jwt软件包和以下代码解码jwt令牌,但是不会给出 exp值? var handler = new JwtSecurityTokenHandler(); var decodedValue = handler.ReadJwtToken("token"); 如何获得exp并将其与当前的日期时间进行比较以计算令牌是否过期? 更新: 我正在使用Azure.Core.AccessToken,其中有以下属性, public DateTimeOffset ExpiresOn { get; } 解决方案 这是我检查令牌是否有效的方式. using System.IdentityModel.Tokens.Jwt; private bool IsValid(string token) { JwtSecurityToken jwtSecurityToken;
0 2024-04-18
编程技术问答社区
OWIN承载令牌认证
我有一些与携带者令牌有关的问题.在OWIN中,您可以这样保护票Protect(ticket)这样: ClaimsIdentity identity = new ClaimsIdentity(Startup.OAuthServerOptions.AuthenticationType); identity.AddClaim(new Claim(ClaimTypes.Name, user.UserName)); Dictionary properties = new Dictionary(); properties.Add("UserId", user.Id); properties.Add("UserName", user.UserName); properties.Add("Role", "user"); AuthenticationProperties properties = new Authenti
4 2024-04-18
编程技术问答社区
使用承载令牌访问身份服务器4上受保护的API
我试图寻找解决此问题的解决方案,但没有找到正确的搜索文本. 我的问题是,如何配置我的身份服务器,以便它也将接受/授权使用BearerTokens? 我具有配置和运行的IdentityServer4. 我还在我的身份服务器上配置了一个测试API,如下所示: [Authorize] [HttpGet] public IActionResult Get() { return new JsonResult(from c in User.Claims select new { c.Type, c.Value }); } 在我的startup.cs configureservices()中如下: public IServiceProvider ConfigureServices(IServiceCollection services) { ... // configure identity server with store
8 2024-04-18
编程技术问答社区
为承载器授权添加额外的逻辑
我正在尝试实施OWIN携带者令牌授权,并基于本文.但是,我在携带者令牌中需要的另一条信息我不知道如何实施. 在我的应用程序中,我需要从携带者令牌用户信息(例如用户ID)中得出.这很重要,因为我不希望授权用户能够充当另一用户.这可行吗?这是正确的方法吗?如果用户ID是GUID,那么这将很简单.在这种情况下,这是一个整数. 授权的用户可以通过猜测/蛮力来冒充另一个用户,这是不可接受的. 查看此代码: public void ConfigureOAuth(IAppBuilder app) { OAuthAuthorizationServerOptions OAuthServerOptions = new OAuthAuthorizationServerOptions() { AllowInsecureHttp = true, TokenEndpointPath = new PathString("/token"),
4 2024-04-18
编程技术问答社区
用JWT检索Azure AD组信息
我的API需要Azure AD承载身份验证. public void ConfigureAuth(IAppBuilder app) { app.UseWindowsAzureActiveDirectoryBearerAuthentication( new WindowsAzureActiveDirectoryBearerAuthenticationOptions { // ... }); } 那么,是否可以查询Azure AD(也许使用图形API)来确定调用用户的组信息?这里的最终目标是将基于角色的安全性应用于API方法/控制器,如下(或类似). [PrincipalPermission(SecurityAction.Demand, Role = "Admin")] 此外,如何应用身份信息应用于执行线程? 解决方案 截至最近,您可以使用角色主张和/或团体主张.如果您的Web API受携带者身份验证保护
4 2024-04-16
编程技术问答社区
支持JWT密钥轮换的Owin中间件用于承载令牌认证
我正在寻找一些指导,以配置OWIN中间件承载者令牌身份验证以支持打开ID连接键旋转. opent ID Connect Spec 旋转: 可以通过以下方法完成签名键的旋转.该签名者将其键在其JWKS_URI位置的JWK集中发布,并在每条消息的Jose标题中包含签名密钥的孩子,以向验证者指示,该验证者应用于验证签名.可以通过定期将新键添加到JWKS_URI位置的JWK设置中来滚动密钥.签名者可以自行决定使用新键,并使用KID值向验证者发出更改.验证者知道,当看到一个陌生的孩子的价值时,请回到JWKS_URI位置重新删除钥匙. 我在这个主题上找到的最类似问题是: SecurityTokenSignatureKeyNotFoundException in OWIN OpenID Connect middleware connecting to Google 该解决方案不太有效,因为在发布新的私钥的时间与客户刷新公共钥匙的缓存时间之间会遇到错误. 因此,我想在找到有
2 2024-04-15
编程技术问答社区
WebApi OAuth UseOAuthBearerAuthentication给出 "序列包含一个以上的元素 "的错误。
我通过以下行配置了我的Webapi OAuth 2.0: app.UseOAuthBearerAuthentication(new OAuthBearerAuthenticationOptions { Provider = new OAuthBearerAuthenticationProvider(), }); app.UseOAuthBearerTokens(OAuthOptions); ,但它在每个请求时给我以下错误: Message : An error has occurred. ExceptionMessage : Sequence contains more than one element ExceptionType : System.InvalidOperationException StackTrace : at System.Linq.Enumerable.SingleOrDefault[TSou
16 2024-04-13
编程技术问答社区
如何获得DotNetOpenAuth.OAuth2在客户端返回的错误信息?
我正在使用ExchangeUserCredentialForToken函数从授权服务器中获取令牌.当我的用户存在于数据库中时,它可以正常工作,但是当凭据不正确时,我想向客户端发送一条消息.我正在使用以下2行代码来设置错误消息: context.SetError("Autorization Error", "The username or password is incorrect!"); context.Rejected(); 但是在客户端,我只会得到协议错误(错误400).您能帮我如何在授权服务器上的服务器端设置错误消息? 授权服务器的完整应用程序配置: using Constants; using Microsoft.Owin; using Microsoft.Owin.Security; using Microsoft.Owin.Security.Cookies; using Microsoft.Owin.Security.Infrastructure; us
4 2024-04-13
编程技术问答社区
ASP.NET Core中的授权。对[授权]属性总是401未授权
我第一次在ASP.NET Core中创建授权. 我在此处使用了教程 问题是当我从Postman发送请求时: Authorization:Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6I... 用[授权]属性装饰的控制器中的方法. 我总是收到401 Unauthorized ...我看到了该教程的评论,看来有些人也有类似的问题.我不知道如何解决这个问题. 解决方案 应其他人的要求,答案是: 问题是在startup.cs 中的中间件订单 public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) { ConfigureAuth(app); // your authorisation configuration app.UseMvc(); } 为什么中间件订单很重要?
0 2024-04-12
编程技术问答社区
ASP.NET Core 2.0 JWT验证失败,出现 "用户授权失败:(null)"的错误。
我正在使用ASP.NET Core 2.0应用程序(Web API)作为JWT发行人来生成由移动应用程序消耗的令牌.不幸的是,这个令牌无法由一个控制器验证,而另一个控制器可以通过另一个控制器验证(使用同一ASP.NET Core 2.0 App中的相同验证设置). 因此,我有一个有效的令牌,可以解码,具有所有必需的索赔和时间戳.但是一个端点接受它,而另一个端点给我401个错误和调试输出: microsoft.aspnetcore.authorization.defaultauthorizationservice:信息: 用户授权失败:( null). [40m[32minfo[39m[22m[49m: Microsoft.AspNetCore.Authorization.DefaultAuthorizationService[2] Authorization failed for user: (null). Microsoft.AspNetCore.Auth
4 2024-04-12
编程技术问答社区