4. JAASRealm + FORM认证
- Accesses authentication information through the Java Authentication & Authorization Service (JAAS) framework.
- 通过实现JAAS(JSR196标准)的服务,获取认证信息
4.1 创建Realm所需的数据表
mysql -uroot -p < security.sql
4.2 配置JAASRealm
$CATALINA_BASE/conf/server.xml
<Context docBase="security-rest" ……>
<Realm className="org.apache.catalina.realm.JAASRealm"
appName="RestJaasRealm"
roleClassNames="com.example.jaas.RestRolePrincipal"
userClassNames="com.example.jaas.RestUserPrincipal"/>
</Context>
Realm定义在context中,否则会导致roleClassNames和userClassNames中定义的类找不到。appName定义的名字和restJaas.conf中定义的须一致。
4.3 JAAS配置文件
/security-rest/src/main/resources/restJaas.conf
RestJaasRealm{
com.example.jaas.RestLoginModule required;
};
第二参数取值和含义
- Required 该模块必须认证用户,如果认证失败,使用其它登录模块认证
- Requisite 如果认证失败,将终止认证
- Sufficient 如果认证成功,即获得登录认证;如果认证失败,使用其它登录模块认证
- Optional 认证将继续下去,即使该模块认证成功
4.4 JAAS实现类
jax-rs2-guide\sample\6\security-rest\src\main\java\com\example\jaas>ls -l
- LoginModule实现类:RestLoginModule.java
- LoginModule实现类的数据库操作类:RestLoginDao.java
- Role接口POJO类:RestRolePrincipal.java
- User接口POJO类:RestUserPrincipal.java
4.5 配置JVM启动参数
-Djava.security.auth.login.config="D:\+aries\github\jax-rs2-guide\sample\6\security-rest\src\main\resources\restJaas.conf"
4.6 数据库驱动
$CATALINA_HOME/lib
M2_REPO/mysql/mysql-connector-java/5.1.25/mysql-connector-java-5.1.25.jar
4.7 配置应用的web.xml
/security-rest/src/main/webapp/WEB-INF/web.xml
<security-constraint>
<web-resource-collection>
<url-pattern>/*</url-pattern>
<http-method>GET</http-method>
<http-method>POST</http-method>
<http-method>UPDATE</http-method>
<http-method>DELETE</http-method>
</web-resource-collection>
<web-resource-collection>
<url-pattern>/webapi/*</url-pattern>
<http-method>GET</http-method>
<http-method>POST</http-method>
<http-method>UPDATE</http-method>
<http-method>DELETE</http-method>
</web-resource-collection>
<auth-constraint>
<role-name>admin</role-name>
</auth-constraint>
</security-constraint>
<security-constraint>
<web-resource-collection>
<url-pattern>/*</url-pattern>
<http-method>GET</http-method>
</web-resource-collection>
<web-resource-collection>
<url-pattern>/webapi/*</url-pattern>
<http-method>GET</http-method>
</web-resource-collection>
<auth-constraint>
<role-name>user</role-name>
</auth-constraint>
</security-constraint>
<login-config>
<auth-method>FORM</auth-method>
<form-login-config>
<form-login-page>/login.html</form-login-page>
</form-login-config>
</login-config>
<welcome-file-list>
<welcome-file>/index.html</welcome-file>
</welcome-file-list>
4.8 登录页面
<form action="j_security_check">
<div>
<span>User Name</span>
<input id="j_username" name="j_username" type="text" />
</div>
<div style="margin-top:10px;margin-bottom:10px;">
<span>Pass Word</span>
<input id="j_password" name="j_password" type="password" />
</div>
<input type="submit" value="Sign In" />
</form>
4.9 JAAS流程
在JAASRealm.authenticate认证方法中,有两个主要对象:
- CallbackHandler 持有登录信息的回调
- LoginContext 通过配置文件感知LoginModule实现类的上下文
认证分为两个步骤:
相关推荐
这是个前后端分离的、支持跨域访问的REST风格的Vue.js+Spring Boot项目,开发工具为IDEA,数据库为MySQL。 这是个前后端分离的、支持跨域访问的REST风格的Vue.js+Spring Boot项目,开发工具为IDEA,数据库为MySQL。...
综合上述信息,这个基于REST架构的Node.js博客系统展示了现代Web开发的一些关键技术和实践,包括: 1. **前后端分离**:通过REST API,前端和后端可以独立开发和部署,提高开发效率。 2. **实时性**:Node.js的事件...
3. 认证和授权:plone.restapi通常会集成Plone的安全模型,允许对资源进行细粒度的访问控制,确保只有经过身份验证和授权的用户才能执行特定操作。 4. 资源表示:库可能包含对Plone对象的序列化和反序列化逻辑,以...
用户可以设置请求头、查询参数、请求体和认证信息。它还提供了JSON格式化和验证功能,方便开发者处理JSON数据。此外,ARC还能保存请求历史,方便日后复用或回顾。 "definitions.json"文件是ARC中的一个重要组成部分...
标题中的“Yelp-NodeJS-EJS-REST”是一个学术项目,它利用了Node.js、EJS模板引擎和RESTful API设计原则来构建一个类似Yelp的平台。这个项目是为学习者提供实践Web开发技能的机会,特别是对于使用JavaScript进行后端...
django-vue-extend基于 django 2.x + vue2.x 的 集成项目技术栈后端框架:基于 Django 2.X + django-rest-framework前端框架:基于 Vue 2.X + Element UI数据模型:基于 PyMySQL 存储授权验证:基于 JWT内置功能:...
Flowable UI app; ... (login/password: admin/test) The API documentation will be available on http://localhost:8080/flowable-rest/docs/ . (login/password: rest-admin/test)
REST-API:node + vue.js + bootstrap
Rest.li 是来自 Linkedin 的一款REST JSON框架,使用动态发现和简单的异步API即可构建健壮可伸缩的服务架构体系。该框架已在LinkedIn得到运用与发展,日趋成熟,满足自身不断发展的需求。 服务端示例:@...
使用SpringMVC+jdbctemplate实现REST风格的CRUD功能 完成功能:能够对用户进行CRUD操作,界面粗糙,只做演示 运行环境:eclipse2019.03+JDK8+Tomcat9.0.41+MySQL5.5 运用到的技术:spring+springMVC+jdbctemplate+...
《Advanced-REST-client_v3.1.9与definitions.json:深入理解REST API调试工具与定义文件》 在当今的Web开发领域,RESTful API已经成为构建分布式系统和微服务架构的标准接口设计模式。为了方便开发者测试和调试...
sails-rest, 在 Sails.js 中,使用rest式API作为ORM适配器 rest 提供从 Sails.js &水线轻松访问 RESTful api的。MODULE 是一个水线/帆适配器,一个快速开发的工具,工具不可知的数据标准。 它的目标是提供一组声明性...
ayty-pbprev身份验证 使用Bootstrap + Angular.js + Rest + Hibernate进行用户身份验证。
5. **认证与授权**:Flask-REST4支持基本的认证机制,如API密钥,以及更高级的身份验证策略,如OAuth2。 6. **Swagger文档支持**:通过集成Swagger UI,开发者可以生成交互式的API文档,方便测试和调试。 7. **...
大型电商项目实战1:Redis+Rest+Linux+Nginx+Spring+SpringMVC实现JAVA高并发秒杀系统,baidu链接,谢谢
根据法规创建和实施逻辑数据模型(REST API) 安全地实施CRUD操作 将数据存储在SQL数据库中 数据安全性(OWASP / RGPD) 验证用户身份并维护其会话 自定义发送到Web客户端的内容 技术能力 Html CSS / SCSS Java...
4、本资源作为“参考资料”如果需要实现其他功能,需要能看懂代码,并且热爱钻研,自行调试。 基于Django+Django -Rest-Framework+Python的在线考试系统后端(源码).zip 基于Django+Django -Rest-Framework+Python...
Node.JS + Express Server REST API 平台的存储库。 代码未维护,因为 Pomodoro 不再使用此 REST API(切换到 Parse) 文档 内容类型: application/json 。 授权:私有端点的承载 SESSION_ID 获取/api/产品 ...
《使用Node.js + Express + MongoDB构建Devcamper REST API》 在当今的Web开发领域,API(应用程序接口)已经成为连接不同系统和服务的...在实际开发中,还需要考虑安全性、认证授权等问题,以确保API的安全稳定运行。
4. **统一接口(Uniform Interface)**:REST的一个关键原则是提供统一的接口,使得客户端无需关心服务端的具体实现。这包括使用标准HTTP方法、URI和媒体类型。 5. **无状态(Statelessness)**:每次请求都包含...