实施安全的原生 Play Framework 2.3.x(Java 样式)身份验证
Implementing secure native Play Framework 2.3.x (Java style) authentication
首先,我完全了解可用于 Play 的身份验证模块。也就是说,当 Play Framework 更新到版本 2.3.x
.
时,我什至无法实现 SecureSocial
. With a little bit of research it became clear that a lot of things were broken in their example code provided here 中最简单的示例代码
借助在线文档和 Philip Johnson 关于实施标准(不安全)身份验证的出色 video tutorial,我成功实施了以下内容:
// Class which is used by the @Security annotation
public class Secured extends Security.Authenticator {
@Override
public String getUsername(Context ctx) {
return ctx.session().get("auth");
}
@Override
public Result onUnauthorized(Context ctx) {
return redirect(routes.Application.login());
}
}
// Controller class that serves routes
public class Application extends Controller {
@Security.Authenticated(Secured.class)
public static Result index() {
return ok(index.render("Your new application is ready."));
}
public static Result login() {
session().clear();
session("auth", "a1234"); // dummy data simulating succesful login
returning redirect(routes.Application.index());
}
}
我最终需要实现一个安全的登录系统来验证用户。
我的问题是两方面的。以下哪个更好:'reinventing the wheel'(至少部分地)采用工作代码库并对其进行改进,或者再次实施其中一个身份验证模块?
我们都不喜欢重新发明轮子,也就是说,我自己编译成功的机会似乎更大...
我知道,对于全面的安全性(a.k.a。分层安全),还需要安全连接实现(HTTPS
与 TLS
1.2` 在写作时间)。这超出了我的问题范围。
不知道这个问题有没有正确答案。是构建自己的框架还是尝试现有框架(可能无法完美运行)取决于您自己的判断。就个人而言,我可能会使用 SecureSocial 作为起点,但如果我无法让它工作,然后编写我自己的代码。听起来这是您已经尝试过的方法。
要使用 SecureSocial,您可能需要检查主分支并从源代码构建。如果示例已过时,可能很难使用,但再次编写自己的授权码也很困难。
首先,我完全了解可用于 Play 的身份验证模块。也就是说,当 Play Framework 更新到版本 2.3.x
.
SecureSocial
. With a little bit of research it became clear that a lot of things were broken in their example code provided here 中最简单的示例代码
借助在线文档和 Philip Johnson 关于实施标准(不安全)身份验证的出色 video tutorial,我成功实施了以下内容:
// Class which is used by the @Security annotation
public class Secured extends Security.Authenticator {
@Override
public String getUsername(Context ctx) {
return ctx.session().get("auth");
}
@Override
public Result onUnauthorized(Context ctx) {
return redirect(routes.Application.login());
}
}
// Controller class that serves routes
public class Application extends Controller {
@Security.Authenticated(Secured.class)
public static Result index() {
return ok(index.render("Your new application is ready."));
}
public static Result login() {
session().clear();
session("auth", "a1234"); // dummy data simulating succesful login
returning redirect(routes.Application.index());
}
}
我最终需要实现一个安全的登录系统来验证用户。
我的问题是两方面的。以下哪个更好:'reinventing the wheel'(至少部分地)采用工作代码库并对其进行改进,或者再次实施其中一个身份验证模块?
我们都不喜欢重新发明轮子,也就是说,我自己编译成功的机会似乎更大...
我知道,对于全面的安全性(a.k.a。分层安全),还需要安全连接实现(HTTPS
与 TLS
1.2` 在写作时间)。这超出了我的问题范围。
不知道这个问题有没有正确答案。是构建自己的框架还是尝试现有框架(可能无法完美运行)取决于您自己的判断。就个人而言,我可能会使用 SecureSocial 作为起点,但如果我无法让它工作,然后编写我自己的代码。听起来这是您已经尝试过的方法。
要使用 SecureSocial,您可能需要检查主分支并从源代码构建。如果示例已过时,可能很难使用,但再次编写自己的授权码也很困难。