相关疑难解决方法(0)

使用JAX-RS和Jersey进行基于REST令牌的身份验证的最佳实践

我正在寻找一种在Jersey中启用基于令牌的身份验证的方法.我试图不使用任何特定的框架.那可能吗?

我的计划是:用户注册我的Web服务,我的Web服务生成令牌,将其发送到客户端,客户端将保留它.然后,对于每个请求,客户端将发送令牌而不是用户名和密码.

我在考虑为每个请求使用自定义过滤器,@PreAuthorize("hasRole('ROLE')") 但我只是认为这会导致很多请求数据库检查令牌是否有效.

或者不创建过滤器并在每个请求中放置一个参数令牌?这样每个API首先检查令牌,然后执行一些东西来检索资源.

java authentication rest jax-rs jersey-2.0

437
推荐指数
2
解决办法
32万
查看次数

JWT发行相同的令牌

我正在使用制作REST API Jersey。我正在使用java-jwthttps://github.com/auth0/java-jwt)进行令牌生成工作。请检查以下代码。

UserJSONInfo -REST方法类

@Path ("/user_info")
public class UserInfoJSONService 
{
    @POST
    @Path("/authenticateUser")
    @Produces(MediaType.APPLICATION_JSON)
    public Response authenticateUser(Credentials credentials)
    {
        UserInfoService service = new UserInfoService();

        try{
        UserInfo authenticateUser = service.authenticateUser(credentials.getUserName(), credentials.getPassword());
        String generateToken = service.generateToken(AuthKey.authorizationSecret);

        Authentication auth = new Authentication();
        auth.setIdUser(authenticateUser.getIduser());
        auth.setToken(generateToken);

        return Response.status(Response.Status.OK).entity(auth).build();
        //return authenticateUser;
        }
        catch(IndexOutOfBoundsException e)
        {
            throw new WebApplicationException(Response.Status.BAD_REQUEST);
        } catch (JWTCreationException ex) {
            throw new WebApplicationException(Response.Status.UNAUTHORIZED);
        } catch (UnsupportedEncodingException ex) {
            throw new WebApplicationException(Response.Status.INTERNAL_SERVER_ERROR);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

UserInfoService-服务层

public class …
Run Code Online (Sandbox Code Playgroud)

java rest jersey jwt

5
推荐指数
1
解决办法
4332
查看次数

标签 统计

java ×2

rest ×2

authentication ×1

jax-rs ×1

jersey ×1

jersey-2.0 ×1

jwt ×1