Mic*_*eds 3 java authentication rest jwt dropwizard
我有以下用于数据库身份验证的 Authenticator 类:
public class DBAuthentication implements Authenticator<BasicCredentials, User> {
private UserDAO userDAO;
public DBAuthentication(UserDAO userDAO) {
this.userDAO = userDAO;
}
@Override
public Optional<User> authenticate(BasicCredentials credentials) throws AuthenticationException{
return userDAO.findByUsernamePassword(credentials.getUsername(), credentials.getPassword());
}
}
Run Code Online (Sandbox Code Playgroud)
然后当我想对资源进行身份验证时,我只需执行以下操作:
@GET
@Produces(MediaType.TEXT_PLAIN)
@Path("/secured")
@UnitOfWork
public String aliveSecure(@Auth User user)
{
return "working.";
}
Run Code Online (Sandbox Code Playgroud)
这是一种简单的经过身份验证的方法 - 而且效果很好...但是,假设我想让用户登录,然后获取他们可以用于将来请求的令牌,直到令牌过期...我会假设(如果我错了,请纠正我)我会做一些事情,比如拥有一个资源,它将获取凭据,然后在响应中返回令牌,以便存储在客户端上 - 这很好......但如果我这样做那么,我稍后将如何针对令牌进行身份验证?
您是对的 - 您将添加一个端点,该端点经过身份验证后会发出 JWT 令牌,然后注释其他受保护资源以使用 JWT 身份验证。
查看dropwizard-auth-jwt,它为 Dropwizard 添加了 JWT 支持。Github 上的示例目录中有一个关于如何使用它的示例。
具体看一下SecuredResource类,它既可以颁发令牌也可以验证它。
例如,您可以扩展您的aliveSecure方法来颁发 JWT 令牌。
我在 Github 上创建了一个示例项目,它使用基本身份验证和@RolesJWT 来发行令牌。
| 归档时间: |
|
| 查看次数: |
4667 次 |
| 最近记录: |