Csharp/C#教程:拒绝令牌请求时自定义OWIN / OAuth HTTP状态代码分享


拒绝令牌请求时自定义OWIN / OAuth HTTP状态代码

我已经派生了OAuthAuthorizationServerProvider以validation客户端和资源所有者。

当我validation资源所有者时,我发现他们的凭据无效,我调用context.Rejected()HTTP响应带有HTTP / 400错误请求状态代码,而我希望HTTP / 401未经授权

如何自定义OAuthAuthorizationServerProvider的响应HTTP状态代码?

这就是我们覆盖OwinMiddleware的方式……首先我们在Owin之上创建了自己的中间件……我认为我们遇到了类似的问题。

首先需要创建一个常量:

 public class Constants { public const string OwinChallengeFlag = "X-Challenge"; } 

我们覆盖了OwinMiddleware

 public class AuthenticationMiddleware : OwinMiddleware { public AuthenticationMiddleware(OwinMiddleware next) : base(next) { } public override async Task Invoke(IOwinContext context) { await Next.Invoke(context); if (context.Response.StatusCode == 400 && context.Response.Headers.ContainsKey(Constants.OwinChallengeFlag)) { var headerValues = context.Response.Headers.GetValues(Constants.OwinChallengeFlag); context.Response.StatusCode = Convert.ToInt16(headerValues.FirstOrDefault()); context.Response.Headers.Remove(Constants.OwinChallengeFlag); } } } 

在startup.Auth文件中,我们允许调用Invoke Owin命令

 public void ConfigureAuth(IAppBuilder app) .... app.Use(); //Allows override of Invoke OWIN commands .... } 

在ApplicationOAuthProvider中,我们修改了GrantResourceOwnerCredentials。

上述就是C#学习教程:拒绝令牌请求时自定义OWIN / OAuth HTTP状态代码分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

 public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context) { using (UserManager userManager = _userManagerFactory()) { IdentityUser user = await userManager.FindAsync(context.UserName, context.Password); if (user == null) { context.SetError("invalid_grant", "The user name or password is incorrect."); context.Response.Headers.Add(Constants.OwinChallengeFlag, new[] { ((int)HttpStatusCode.Unauthorized).ToString() }); //Little trick to get this to throw 401, refer to AuthenticationMiddleware for more //return; } .... 

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/1007332.html

(0)
上一篇 2021年12月29日
下一篇 2021年12月29日

精彩推荐