【问题标题】:Forms authentication to create bearer tokens for Web API?表单身份验证为 Web API 创建不记名令牌?
【发布时间】:2014-11-20 10:18:25
【问题描述】:

我们有一个 .NET Web 表单项目,该项目使用我们的网站运行的 sql 成员表单身份验证。我们现在正在尝试建立一个 Web API 2 项目,并希望使用该 API 的用户使用他们的网站凭据来验证他们对 API 的调用。

  1. 我们是否必须将我们的网站更新为身份验证? ...或
  2. 我们是否可以使用我们现有的成员身份/表单身份验证来验证用户,然后给他们一个令牌,以便他们可以用于后续调用?

在这两种情况下,我该如何实现该场景?

感谢您的帮助!

【问题讨论】:

    标签: asp.net-web-api forms-authentication


    【解决方案1】:
    1. 无需升级 ASP.NET Identity,您可以与会员提供商合作
    2. 您可以使用您的旧会员资格提供商来验证用户名和密码,通过查看下面的代码,您需要使用您的 memebership.validate 用户方法更改以 (**) 为前缀的代码行,仅此而已。

    您可以在我的详细Token based Authentication Post中阅读更多相关信息

    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);
    
        }
    

    【讨论】:

      猜你喜欢
      • 2014-10-13
      • 2017-08-16
      • 1970-01-01
      • 1970-01-01
      • 2021-05-12
      • 1970-01-01
      • 2017-04-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多