通过Authorize Attribute进行OAuth不记名标记验证

我坚持使用OAuth令牌授权。 我已配置OAuth,并拥有自己的OAuth服务器提供程序。

配置代码:

    OAuthAuthorizationServerOptions OAuthServerOptions = new OAuthAuthorizationServerOptions()
    {
        AllowInsecureHttp = true,
        TokenEndpointPath = new PathString("/token"),
        AuthorizeEndpointPath = new PathString("/authorize"),
        AccessTokenExpireTimeSpan = TimeSpan.FromHours(1),
        Provider = new SimpleAuthorizationServerProvider()
    };

    app.UseOAuthAuthorizationServer(OAuthServerOptions);
    app.UseOAuthBearerAuthentication(new OAuthBearerAuthenticationOptions());

服务提供商:

 public class SimpleAuthorizationServerProvider : OAuthAuthorizationServerProvider
    {
        public override async Task ValidateClientAuthentication(OAuthValidateClientAuthenticationContext context)
        {
            context.Validated();
        }

        public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context)
        {

            context.OwinContext.Response.Headers.Add("Access-Control-Allow-Origin", new[] { "*" });

            using (AuthRepository _repo = new AuthRepository())
            {
                IdentityUser user = await _repo.FindUser(context.UserName, context.Password);

                if (user == null)
                {
                    context.SetError("invalid_grant", "The user name or password is incorrect.");
                    return;
                }
            }

            var identity = new ClaimsIdentity(context.Options.AuthenticationType);
            identity.AddClaim(new Claim("sub", context.UserName));
            identity.AddClaim(new Claim("role", "user"));

            context.Validated(identity);            
        }
    }

当我向OAuth令牌端点"localhost/token"发送: grand_type=password, username=MyUserName, password=MyPassword ,它很好地创建了我的OAuth载体令牌。 但是从这里开始,我不知道如何使用这个生成的令牌,它存储在哪里(如何获取它)以及如何使用ASP.NET MVC控制器上的[Authorize]属性进行成功验证。 我只是简单地想要使用我生成的令牌,当我从一个视图转到另一个视图时,它具有[Authorize]属性并成功通过它。 我怎样才能做到这一点?


实施以下工作流程:

  • 通过密码授权类型检索访问令牌
  • 通过传递此访问令牌来获取用户信息。 链接:http://openid.net/specs/openid-connect-core-1_0.html#UserInfo
  • 将声明存储在Cookie中
  • 链接地址: http://www.djcxy.com/p/22341.html

    上一篇: OAuth bearer token validation by Authorize Attribute

    下一篇: Using both OAuth and Basic Auth in Asp.Net Web Api with Owin