我熟悉在Dropwizard中实现BasicAuth
安全性,但仅限于RESTfulendpoint/资源。
我现在正在试验Dropwizard视图,看看我是否能把它作为web和REST服务器合二为一。web应用程序将有“公共”页面(实际上只是静态的HTML文件;“关于我们”、“联系我们”等。)以及“私人”(动态)页面,真正构成了app。要访问这些页面,用户必须经过身份验证(登录)。
因此,这意味着我需要两种不同的DW身份验证机制:
理想情况下,我希望 Apache Shiro 处理我的系统(REST 和 Web 等)的所有身份验证,并且我看到了 Dropwizard-Shiro 库,但这似乎只验证 REST endpoint。
我的网络登录系统需要这样工作:
我主要关心的问题是:*我应该为servlet将检查的cookie/会话变量实现什么?;和*如何将我的身份验证控制器(即处理登录页面和目标URL之间重定向的资源)与Shiro集成?是否可以通过Dropwizard-Shiro库执行此操作?
自定义Servlet过滤器(在环境
中注册):
public class AuthFilter implements ContainerResponseFilter {
@Override
public void filter(ContainerRequestContext requestContext,
ContainerResponseContext responseContext) {
Cookie[] cookies = requestContext.getCookies();
boolean authenticated = false;
for(Cookie cookie : cookies) {
// 1. This is my first concern. What is better/more secure
// than what I'm doing here?
if("my_app_auth_cookie".equals(cookie.getName())) {
authenticated = true;
}
}
if(authenticated == false) {
responseContext.sendDirect("/auth/login");
}
}
}
如果它们未通过身份验证,它们将重定向到< code>/auth/login,这将命中一个< code>AuthController(再次向< code >环境注册为资源):
@Path("/auth")
@Produces(MediaType.TEXT_HTML)
public class AuthController {
@GET
@Path("/login")
public LoginPageView login() {
// Render some "login.ftl" template as HTML.
}
@POST
@Path("/authenticate")
public ??? authenticate(??? username, ??? password) {
// 2. Somehow send 'username' and 'password' to Shiro...
MyAppUser user = myAppRealm.authenticate(username, password);
// Now what do I do with 'user'?
}
}
当用户在登录页面上提交表单时(这可能是对<code>/auth/authenticate</code>)我们会以某种方式将他们输入的凭证交给Shiro(同样,我希望使用Dropwizard Shiro库,因为我可能也会将其用于我的RESTendpoint)。
Apache Shiro有自己的过滤器类型,在shiro.ini
中配置。
例子:
[urls]
/api/** = noSessionCreation, authcBasic
/views/login = authc
/views/authenticated = authc, user
配置< code>authc筛选器以重定向到您实现的登录表单页面。使用过滤器的表单参数并发布到< code>/views/login。
如果在 Jetty 中启用了会话管理器,则 Shiro 应该在从登录表单页面登录时创建 servlet 会话。
请注意,我没有实际测试过这个配置。
我遵循了为keycloak(版本4.8.3)设置自定义身份验证器spi的演练。我几乎只使用从这里得到的示例代码。我只更改了以便能够编译项目并使用部署它。而且它起作用了...我可以在keycloak中配置新的身份验证流,更新浏览器流并设置所需的动作。但是,如果我想在应用程序中使用新的身份验证,我会得到以下消息:。并且在控制台中得到以下输出: 我在github上查找了文件DefaulTauthenti
身份验证 PDF版下载 企业应用中的URL链接可以通过OAuth2.0验证接口来获取员工的身份信息。 通过此接口获取员工身份会有一定的时间开销。对于频繁获取员工身份的场景,建议采用如下方案: 企业应用中的URL链接直接填写企业自己的页面地址; 员工跳转到企业页面时,企业校验是否有代表员工身份的cookie,此cookie由企业生成; 如果没有获取到cookie,重定向到OAuth验证链接,获取员工
问题内容: 有人可以给我一个使用SSHJ进行公共密钥身份验证的示例吗?我意识到这个问题与ssh的私钥/公钥身份验证示例基本相同,但是作者的回答是指不再存在的google用户组,我是无法使其正常工作。 谢谢!菲尔 问题答案: 我们在SSHJ之上构建了overthere框架。可以连接也可以使用密钥文件进行连接。以下代码应该可以工作,但是请确保将bouncycastle库添加到类路径中。 希望能有所帮助
本文向大家介绍IOS 身份证校验详细介绍及示例代码,包括了IOS 身份证校验详细介绍及示例代码的使用技巧和注意事项,需要的朋友参考一下 IOS 身份证校验 身份证基础知识: 身份证是国民的身份编号,编号是有一定规律的,这里介绍身份证验证规则比较详细。项目中经常会需要对身份证进行校验,我们先了解一些基本知识,然后分析代码 居民身份证号码,根据〖中华人民共和国国家标准 GB 11643-1999〗中有
最后一行失败了 捕获的JMSException:com.ibm.msg.client.jms.detailedJMSSecurityException:JMSWMQ2013:为连接模式为“Client”、主机名为“Natmib1.hostname.net(1414)”的QueueManager“提供的安全身份验证无效。请检查您正在连接到链接异常:com.ibm.MQ.mqexception:jms
问题内容: 我正在尝试在Node.js中使用Socket.IO,并试图允许服务器为每个Socket.IO客户端赋予一个身份。由于套接字代码不在http服务器代码的范围内,因此无法轻松访问已发送的请求信息,因此我假设在连接期间需要将其发送出去。什么是最好的方法 1)将有关谁通过Socket.IO连接到服务器的信息 2)验证他们说的是谁(如果正在使事情变得更容易,我目前正在使用Express) 问题答