我正在做一些关于拖放向导安全性和身份验证的研究。这是我 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();
}
}
在最新版本的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信号是什么,它有很长的历史,在这个维基百科页面上有解