asp.net-web-api – 用于为Web API创建承载令牌的表单身份验证?

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

>我们是否必须将我们的网站更新为身份验证? …要么
>我们是否可以使用现有的成员身份/表单身份验证来对用户进行身份验证,然后为他们提供可用于后续呼叫的令牌?

在任一情况下,如何实施该方案?

谢谢你的帮助!

最佳答案 >无需升级ASP.NET Identity,您可以使用成员资格提供程序

>您可以使用您的旧会员提供程序来验证用户名和密码,通过查看下面的代码,您需要使用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);

    }
点赞