【问题标题】:WebAPI 2 Create Custom Authentication TokenWebAPI 2 创建自定义身份验证令牌
【发布时间】:2015-02-16 19:33:40
【问题描述】:

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

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

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

【问题讨论】:

    标签: asp.net-web-api2


    【解决方案1】:

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

    使用 ASP.NET Identity 似乎相对简单。

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

    您的启动类中的配置如下所示:

    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。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-10-25
      • 1970-01-01
      • 2014-07-06
      • 2019-07-04
      • 2011-03-18
      • 2023-03-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多