在 5 分钟内使用 play-pac4j 保护您的 Play 2 Webapp

一则或许对你有用的小广告

欢迎加入小哈的星球 ,你将获得:专属的项目实战 / 1v1 提问 / Java 学习路线 / 学习打卡 / 每月赠书 / 社群讨论

  • 新项目:《从零手撸:仿小红书(微服务架构)》 正在持续爆肝中,基于 Spring Cloud Alibaba + Spring Boot 3.x + JDK 17...点击查看项目介绍 ;
  • 《从零手撸:前后端分离博客项目(全栈开发)》 2 期已完结,演示链接: http://116.62.199.48/ ;

截止目前, 星球 内专栏累计输出 63w+ 字,讲解图 2808+ 张,还在持续爆肝中.. 后续还会上新更多项目,目标是将 Java 领域典型的项目都整一波,如秒杀系统, 在线商城, IM 即时通讯,权限管理,Spring Cloud Alibaba 微服务等等,已有 2200+ 小伙伴加入学习 ,欢迎点击围观

我很自豪地宣布发布基于 pac4j v1.8 ( https://github.com/pac4j/pac4j ) 的 play-pac4j v2.0 ( https://github.com/pac4j/play-pac4j )任何 Play 2 网络应用程序。它现在是一个 完整的安全库,简单而强大,支持身份验证和授权 ,还支持应用程序注销和 CSRF 保护等高级功能。

它支持大多数身份验证机制:OAuth(Facebook、Twitter、Google、Yahoo...)、CAS、HTTP(表单、基本身份验证...)、OpenID、SAML、Google App Engine、OpenID Connect、JWT、LDAP、RDBMS、 MongoDB 和 Stormpath 以及授权检查(角色/权限、CSRF 令牌...)

通过四个简单的步骤,保护您的网络应用程序:

1) 添加对库的依赖(Java Play 应用程序的 play-pac4j-java 或 Scala 应用程序的 play-pac4j-scala_2.11 )和所需的身份验证机制(例如 Facebook 的 pac4j-oauth 库)

2) 在模块中定义身份验证机制(客户端)和授权者(检查授权)。例如:Facebook 身份验证和 ROLE_ADMIN


 public class SecurityModule extends AbstractModule {
@Override
protected void configure() {
    FacebookClient facebookClient = new FacebookClient("xx", "yy");
    Clients clients = new Clients("http://localhost:9000/callback", facebookClient);
    Config config = new Config(clients);
    config.addAuthorizer("admin", new RequireAnyRoleAuthorizer("ROLE_ADMIN"));
    bind(Config.class).toInstance(config);
}

}

3) 定义用于 Facebook 身份验证的回调控制器( 路由 ):


 public class SecurityModule extends AbstractModule {
@Override
protected void configure() {
    FacebookClient facebookClient = new FacebookClient("xx", "yy");
    Clients clients = new Clients("http://localhost:9000/callback", facebookClient);
    Config config = new Config(clients);
    config.addAuthorizer("admin", new RequireAnyRoleAuthorizer("ROLE_ADMIN"));
    bind(Config.class).toInstance(config);
}

}

4) 保护 /facebook/index.html url 以要求用户进行身份验证,如果没有,则执行 Facebook 身份验证:


 public class SecurityModule extends AbstractModule {
@Override
protected void configure() {
    FacebookClient facebookClient = new FacebookClient("xx", "yy");
    Clients clients = new Clients("http://localhost:9000/callback", facebookClient);
    Config config = new Config(clients);
    config.addAuthorizer("admin", new RequireAnyRoleAuthorizer("ROLE_ADMIN"));
    bind(Config.class).toInstance(config);
}

}


 public class SecurityModule extends AbstractModule {

    @Override
    protected void configure() {
        FacebookClient facebookClient = new FacebookClient("xx", "yy");
        Clients clients = new Clients("http://localhost:9000/callback", facebookClient);
        Config config = new Config(clients);
        config.addAuthorizer("admin", new RequireAnyRoleAuthorizer("ROLE_ADMIN"));
        bind(Config.class).toInstance(config);
    }
}

和/或要求用户拥有 ROLE_ADMIN:


 public class SecurityModule extends AbstractModule {
@Override
protected void configure() {
    FacebookClient facebookClient = new FacebookClient("xx", "yy");
    Clients clients = new Clients("http://localhost:9000/callback", facebookClient);
    Config config = new Config(clients);
    config.addAuthorizer("admin", new RequireAnyRoleAuthorizer("ROLE_ADMIN"));
    bind(Config.class).toInstance(config);
}

}

阅读文档:https: //github.com/pac4j/play-pac4j 并在 Java 中尝试演示:https: //github.com/pac4j/play-pac4j-java-demo 或在 Scala 中: https://github .com/pac4j/play-pac4j-scala-演示

相关文章