【问题标题】:Oauth 2.0 server with apache CXF带有 apache CXF 的 Oauth 2.0 服务器
【发布时间】:2016-05-30 14:41:33
【问题描述】:

我目前正在尝试使用 apache CXF 实现 OAuth 2.0 令牌服务器。我的要求相当简单。我将有两种消费者,一种使用客户端凭据流,另一种使用客户端创建的 JWT 令牌。

使用documentation,我已经能够让客户端凭据流动并正常工作,但在 JWT 方面我有点迷茫。

据我了解,JWT 令牌是一个自包含令牌。就我而言,它将由我的一位注册客户生成。我使用以下库创建了一个 JWT 令牌:

https://github.com/auth0/java-jwt

现在 CXF 带有一个内置的 OAuthRequestFilter 来执行这部分验证访问令牌,我不确定在我的客户端服务器(JWT)上创建令牌时应该是什么流程,因为默认情况下我不认为该过滤器将能够处理它。

现在,我无法理解的是如何在我的服务器上处理这个令牌。我如何验证它?提取作用域?

【问题讨论】:

    标签: java apache web-services oauth cxf


    【解决方案1】:

    就我用过JWTs而言,它们可以相当简单地使用:

    private static String superdupersecret = RandomStringUtils.randomAlphanumeric(24);
    private static JWTSigner signer = new JWTSigner(superdupersecret);
    private static JWTVerifier verifier = new JWTVerifier(superdupersecret);
    

    所以要生成一个JWT

        Map<String, Object> claims = Maps.newHashMap();
        claims.put("username", this.username);
        claims.put("role", this.role);
    
        //token is valid for 60 * 60 seconds = 1 hr.
        claims.put("exp", Integer.valueOf((int) (3600 + System.currentTimeMillis() / 1000L)));
        return signer.sign(claims);
    

    并验证它:

            try {
                Map<String, Object> claims = verifier.verify(tokenString);
    
                ...String.valueOf(claims.get("username"))...         
            }  
            catch (InvalidKeyException | NoSuchAlgorithmException | IllegalStateException | SignatureException | IOException | JWTVerifyException e) {
                e.printStackTrace();
               ...
            }
    

    所以你分两步验证它:

    • 通过使用secret 来确定它是否是有效令牌并获取声明
    • 通过再次检查声明,例如检查到期日期以及用户是否为有效用户。

    【讨论】:

    • 您好 RobAu,感谢您的回复。对不起,我认为我没有更好地解释自己。我了解验证 JWT 的代码,但我不确定在我的案例中将其放在哪里。在 oauth 的 CXF 实现中,有一些过滤器可以验证令牌。根据此处的文档:cxf.apache.org/docs/… 因此,考虑到这一点,我是否应该创建一个自定义过滤器来处理这两种类型的令牌?
    猜你喜欢
    • 2015-09-03
    • 1970-01-01
    • 2013-03-17
    • 2013-08-26
    • 1970-01-01
    • 2018-05-10
    • 1970-01-01
    • 1970-01-01
    • 2014-03-10
    相关资源
    最近更新 更多