Grails中的2因素身份验证

时间:2019-04-10 14:37:31

标签: grails groovy

我想要一种实现2因子身份验证的方法。当用户输入用户名和密码时,会将其移动到另一个页面,在该页面中授予他们临时角色,然后要求他们输入安全令牌,该令牌将通过电子邮件发送给他们。 authtoken image

login image

1 个答案:

答案 0 :(得分:0)

我去过那里,并且我发现,如果您使用的是传统的老式Web应用程序,则几乎可以轻松地以自定义代码实现此功能。我认为春季有一些功能可以使您执行此操作,但是根据您的应用程序,自己执行操作可能会容易得多,甚至没有那么困难。

一种方法是创建覆盖所有受此影响的路由的grails过滤器。例如,除登录页面和第二页之外的所有内容。此过滤器将检查临时角色,如果找到,它将重定向到第二个身份验证页面。否则,它将使请求通过。可能是这样的:

twoFactorCheck(controller: '*', controllerExclude: 'privacyPolicy|login|logout|2factor', action: '*') {

    before = {

        if (process2factorAuthNeed()) {
            return true;
        }

        redirect(controller: "2factor", action: "index");
        return false;

    }
}

然后,您需要做的另一件事是自定义UserDetailsS​​ervice的实现,您可以在其中捕获第一个普通身份验证并为用户设置临时角色。此处介绍了此内容:https://grails-plugins.github.io/grails-spring-security-core/2.0.x/guide/userDetailsService.html(如果您使用的是grails 2. *,但您的Spring Security插件版本的用户指南中也会包含此条目。