首页 > 解决方案 > 从 C# 中的 OAuthAuthorizationServer 注册后生成访问令牌

问题描述

我正在使用 owin oAuth 为 Web api 访问生成用户令牌,例如

public void Configuration(IAppBuilder app)
{
 OAuthOptions = new OAuthAuthorizationServerOptions()
 {
   TokenEndpointPath = new PathString("/auth/token"),
   Provider = new ApplicationAuthProvider(),
   AllowInsecureHttp = true,
   AccessTokenExpireTimeSpan = TimeSpan.FromDays(1)
 };
 app.UseOAuthBearerTokens(OAuthOptions);
}

public class ApplicationAuthProvider : OAuthAuthorizationServerProvider
{
    public override async Task ValidateClientAuthentication(OAuthValidateClientAuthenticationContext context)
    {
        context.Validated();
    }
    public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context)
    {
        DL_User dlUser = new DL_User();
        bool Valid = dlUser.ValidateUser(context.UserName,context.Password);
        if (Valid)
        {
            var identity = new ClaimsIdentity(context.Options.AuthenticationType); identity.AddClaim(new Claim("Username", context.UserName));
            identity.AddClaim(new Claim("Password", context.Password)); context.Validated(identity);
        }
        else
        {
            context.SetError("invalid_grant", "The user name or password is incorrect.");
            return;
        }
    }
}

我有一个控制器方法供用户注册

[ResponseType(typeof(User))]
    [Route("Register")]
    public IHttpActionResult Register(User user)
    {
        
        
        userRepository.CreateUser(user);
        //Need to get user's access token here
        return Ok(user);
   
    }

当我使用用户名和密码调用“/auth/token”端点时,这工作正常,它返回访问令牌。

但是我怎样才能给用户访问令牌作为注册 API 调用的响应呢?

在这里,我需要获取用户的访问令牌,并在 Controller 的 Register 方法中将其作为响应。我怎样才能做到这一点?

标签: c#asp.net-identity

解决方案


推荐阅读