Web API 2创建自定义身份验证令牌

时间:2015-02-16 19:33:41

标签: asp.net-web-api2

我想创建自定义承载令牌,并在令牌中存储一些其他信息。

只想使用创建令牌功能(类似于FormsAuthentication)而不使用用户表的默认实现(ASP.NET身份)。

1)自定义登录方法(MyLogin),它将创建带有附加信息的自定义承载令牌(嵌入到令牌中的IP地址)。 2)在后续请求中,如果附加信息与某些规则不匹配,则能够检查附加信息并拒绝(将请求视为未经认证)。  如果我收到承载令牌并发现请求来自不同的IP地址,那么嵌入其中的那个,清除/使承载令牌无效并将当前请求视为未经过身份验证。

1 个答案:

答案 0 :(得分:0)

我绝不是专家,但这是我收集的信息。

这似乎与ASP.NET身份相比很简单。

您需要创建自己的令牌提供程序实现,以实现IAuthenticationTokenProvider接口。您实现create方法,以便按照您希望的方式创建令牌,然后在配置身份验证中间件时为您的提供者提供。

starup类中的配置如下所示:

public class Startup
{
    public void Configuration(IAppBuilder app)
    {
        ConfigureOAuth(app);
    //Rest of code is here;
    }

    public void ConfigureOAuth(IAppBuilder app)
    {
        OAuthAuthorizationServerOptions OAuthServerOptions = new OAuthAuthorizationServerOptions()
        {
            AllowInsecureHttp = true,
            TokenEndpointPath = new PathString("/yourtokenendpoint"),
            AccessTokenExpireTimeSpan = TimeSpan.FromDays(1),
            Provider = new SimpleAuthorizationServerProvider(),
            AccessTokenProvider = new YourCustomTokenProvider() // YourCustomTokenProvider implements IAuthenticationTokenProvider 
        };

        OAuthBearerAuthenticationOptions bearerOptions = new OAuthBearerAuthenticationOptions()
        {
            AccessTokenProvider = new YourCustomTokenProvider() // YourCustomTokenProvider implements IAuthenticationTokenProvider 
        }


        // Token Generation
        app.UseOAuthAuthorizationServer(OAuthServerOptions);
        app.UseOAuthBearerAuthentication(bearerOptions);

    }
}

我自己从未这样做,但我希望这有用。

编辑:要验证令牌,您可以创建一个自定义操作过滤器,用于装饰控制器操作。在此操作过滤器中,您可以验证令牌并对请求执行任何您喜欢的操作。请参阅this guide