美文网首页
使用PoP令牌

使用PoP令牌

作者: 灭蒙鸟 | 来源:发表于2017-02-26 17:22 被阅读204次

layout: docs-default

在katana管道中使用PoP令牌

在WebApi中使用PoP令牌,需要两部分配置。
第一部分是配置令牌验证中间件,有些小的修改来适应PoP令牌校检。
第二部分是配置中间件通过验证PoP令牌中的签名来确认拥有证据(PoP)的密钥

IdentityModel.Owin.PopAuthentication NuGet 包提供了基本代码来完成这个配置

修改正常的令牌验证中间件

主要有两个配置改变来适应PoP令牌。一个是修改认证schema为PoP,然后配置令牌提供器定位PoP令牌中的访问令牌。
配置认证中间件使用PoP Schema很简单,只需要把AuthenticationType 属性设置为 "PoP" (注意两个P都是大写的).

配置令牌提供器从PoP令牌中拿到访问令牌,需要设置Provider属性,并且处理OnRequestToken事件。
DefaultPopTokenProvider.GetAccessTokenFromPopTokenAsync 帮助方法可以来完成这个工作。

如果使用 IdentityServer3.AccessTokenValidation 中间件,那么配置修改后,看起来和下面一样:

public void Configuration(IAppBuilder app)
{
    JwtSecurityTokenHandler.InboundClaimTypeMap.Clear();

    app.UseIdentityServerBearerTokenAuthentication(new IdentityServerBearerTokenAuthenticationOptions
    {
        // The HttpSignatureValidation middleware looks for another middleware called PoP
        AuthenticationType = "PoP",
        
        // locate the access token from within  the PoP token
        Provider = new OAuthBearerAuthenticationProvider
        {
            OnRequestToken = async ctx =>
            {
                ctx.Token = await DefaultPopTokenProvider.GetAccessTokenFromPopTokenAsync(ctx.OwinContext.Environment);
            }
        },
        
        // ...
    };
}

如果使用 Microsoft.Owin.Security.Jwt 中间件,配置之后看起来和下面一样:

public void Configuration(IAppBuilder app)
{
    JwtSecurityTokenHandler.InboundClaimTypeMap.Clear();

    app.UseJwtBearerAuthentication(new JwtBearerAuthenticationOptions
    {
        // The HttpSignatureValidation middleware looks for another middleware called PoP
        AuthenticationType = "PoP",
        
        // locate the access token from within  the PoP token
        Provider = new OAuthBearerAuthenticationProvider
        {
            OnRequestToken = async ctx =>
            {
                ctx.Token = await DefaultPopTokenProvider.GetAccessTokenFromPopTokenAsync(ctx.OwinContext.Environment);
            }
        },  
              
        // ...
    };
}

中间件验证使用PoP来HTTP请求

一旦上面的代码从PoP令牌中取到了访问令牌,那么必须用PoP令牌中的签名来验证当前HTTP请求。
只要在访问令牌验证中间件之后 注册HttpSignatureValidationMiddleware 到Katana 管道里,就可以实现上面的验证过程。
看起来如下:

public void Configuration(IAppBuilder app)
{
    JwtSecurityTokenHandler.InboundClaimTypeMap.Clear();

    app.UseIdentityServerBearerTokenAuthentication(new IdentityServerBearerTokenAuthenticationOptions
    {
        // The HttpSignatureValidation middleware looks for another middleware called PoP
        AuthenticationType = "PoP",
        
        // locate the access token from within  the PoP token
        Provider = new OAuthBearerAuthenticationProvider
        {
            OnRequestToken = async ctx =>
            {
                ctx.Token = await DefaultPopTokenProvider.GetAccessTokenFromPopTokenAsync(ctx.OwinContext.Environment);
            }
        },
        
        // ...
    };
    
    app.UseHttpSignatureValidation();
}

默认的签名验证使用收到的访问令牌和PoP令牌里的时间戳,如果使用签名验证HTTP请求的其它部分,那么可以把HttpSignatureValidationOptions传到UseHttpSignatureValidation API.

HttpSignatureValidationOptions 包含下面的配置项:

  • TimespanValidityWindow: TimeSpan 使用PoP令牌中的 Timespan 来验证;
  • ValidateMethod: 验证the HTTP request's 方法.
  • ValidateHost: 验证 the HTTP request's 主机名.
  • ValidatePath: 验证 the HTTP request's 路径.
  • ValidateBody: 验证 the HTTP request's 主体.
  • QueryParametersToValidate: 一个集合指定querystring的键值来验证HTTP request.
  • RequestHeadersToValidate: 一个结合指定Http头的键值来验证HTTP request

例子可以参看 这里.

相关文章

  • 使用PoP令牌

    layout: docs-default 在katana管道中使用PoP令牌 在WebApi中使用PoP令牌,需要...

  • 请求PoP令牌

    layout: docs-default 请求 PoP 令牌 注意 文档处于beta版状态 PoP访问令牌可以作为...

  • SpringSecurity OAuth2 自定义令牌配置(JW

    目录: 自定义令牌配置 使用JWT替换默认令牌 扩展JWT JAVA中解析JWT 刷新令牌 Spring Secu...

  • struts令牌标签

    令牌标签 令牌标签:作用是防止表单重复提交(F5)令牌标签的使用: 在网页的form中增加令牌标签 需要在acti...

  • Bleve 文档翻译计划(7)——令牌过滤器

    Token Filters(令牌过滤器) 分析器按名称引用令牌过滤器。使用现有的或使用 IndexMapping....

  • Python:itsdangerous模块

    使用itsdangerous生成临时身份令牌 安装 使用方法:

  • MYshiro

    (1)使用用户的登录信息创建令牌 token可以理解为用户令牌,登录的过程被抽象为Shiro验证令牌是否具有合法身...

  • ios 动画效果网址

    一. pop动效库 https://github.com/facebook/pop 使用pop的动效Demo...

  • Token处理

    令牌存储到redis: 二、使用JWT(JSON WEB TOKEN)替换默认token特点:1.自包含:令牌本身...

  • OAuth2 和 OpenID Connect 含义理解

    OAuth2 OAuth2协议,它允许应用程序通过一个安全令牌服务获取访问令牌,随后使用这个访问令牌来访问API。...

网友评论

      本文标题:使用PoP令牌

      本文链接:https://www.haomeiwen.com/subject/rylvyttx.html