当前位置: 首页 > 知识库问答 >
问题:

Dropwizard验证用户

司徒杜吟
2023-03-14

我正在做一些关于拖放向导安全性和身份验证的研究。这是我 http://howtodoinjava.com/dropwizard/dropwizard-basic-auth-security-example/ 使用的链接。

我的问题是如何实际创建新用户,因为VALID_users是静态final,不能更改。我正在考虑创建一个数据库,它将由包含用户名和角色(例如admin)的用户对象组成。(我不需要密码)但我不知道该返回什么。在他们的示例中,他们返回了Optional。of(新用户(credentials.getUsername(),VALID_USERS.get(credenties.getUsername())));我会返回用户对象吗?

从本质上讲,我想通过用户名对用户进行身份验证,并为他们提供授权角色,例如管理员,基本。但我想我对如何生成用户及其角色的列表感到困惑。我正在考虑制作一个数据库,但我不确定我将如何实现它。

    public class AppBasicAuthenticator implements Authenticator<BasicCredentials, User> 
{
    private static final Map<String, Set<String>> VALID_USERS = ImmutableMap.of(
        "guest", ImmutableSet.of(),
        "user", ImmutableSet.of("USER"),
        "admin", ImmutableSet.of("ADMIN", "USER")
    );

    @Override
    public Optional<User> authenticate(BasicCredentials credentials) throws AuthenticationException 
    {
        if (VALID_USERS.containsKey(credentials.getUsername()) && "password".equals(credentials.getPassword())) 
        {
            return Optional.of(new User(credentials.getUsername(), VALID_USERS.get(credentials.getUsername())));
        }
        return Optional.empty();
    }
}

共有1个答案

徐杰
2023-03-14

在最新版本的DropWizard中,您可以发现既可以进行身份验证,也可以进行授权。简而言之,前者指示DropWizard在用户尝试访问资源或提供其他身份检查时,如果您使用基本身份验证,则要求用户提供凭据。后者允许根据用户的角色授予用户对各种资源的访问权限。

存储用户数据和角色有多种可能性。例子包括你提到的数据库、LDAP服务器和第三方身份管理系统。

如果您对基本身份验证感兴趣,可以看看这里的示例。数据库用于存储用户的凭据。此外,这是我关于DropWizard身份验证的有点过时的教程。最新版本的代码在上述示例应用程序中。

要仅实现身份验证,您可以跳过添加角色和注册授权程序。要添加授权,您可以将角色集合添加到您的用户实体,并使用诸如@R呼吸器允许和@PermitAll之类的注释以及授权程序实现来授予/拒绝对您的资源的访问。

DropWizard认证文档的链接在这里。

欢迎在评论中提出更多问题,祝你好运。

 类似资料:
  • 在DropWizard中,我可以设置基本身份验证,如下所示(在impl中): 领域在DropWizard中是什么意思,在中指定它有什么意义?它创造了一些东西与这个领域在引擎盖下?

  • Dropwizard是否也支持摘要验证?我只找到了基本的身份验证和OAuth。这方面的示例代码会很好。 null

  • 我正在尝试在Dropwizard web应用程序中实现OAuth2身份验证。我已经创建了所需的<code>验证器 我所需的行为是,在我的客户端通过在我的登录页面上提供他/她的凭据登录后,我想将客户端重定向到我使用Dropwizard Views创建的问候语页面,并且路径为“/me”,如下所示: 我的问候资源如下所示: 目前,我得到一个“访问此资源需要凭据。”登录后的响应。在阅读了一些关于令牌认证的

  • 我使用以下方法注册了身份验证器:

  • 问题内容: 我有其他人编写的REST api,其中处理请求到特定url的方法接受一堆从路径参数填充的参数。 撰写此文章的人曾经使用过DropWizard,但我以前没有使用它的经验。我的任务是通过将其与db中的值进行比较来验证studentId字段。这将非常简单,但是我被告知要使用自定义验证程序来执行此操作。我对编写注释非常陌生,但经过大量挖掘后,这样编写了注释, 此后,我将注释添加到了要像这样运行

  • FreeRADIUS支持各种身份验证协议。它们的复杂程度各不相同,PAP最简单,EAP最复杂。 编辑用户文件 如果用户存储由用户文件组成,请记住在用户文件最新更改生效之前必须向运行的FreeRADIUS进程发送SIGHUP信号才能生效。 #> kill -1`cat / var / run / radiusd.pid` 如果你不知道SIGHUP信号是什么,它有很长的历史,在这个维基百科页面上有解