java ee jaas_java-ee – Tomcat-Jaas – 如何检索主题?

i knew that and it works, but I need to retrieve subject to get also roleprincipal

不幸的是,它在Java EE中的工作方式不同. JAAS主题只是一个“主要包”,其中哪些代表用户/调用者主体和/或角色主体根本不是标准化的.每个其他容器在这里做不同的事情. Javadoc for Tomcat’s JAASRealm描述了这一点并解释了Tomcat特定约定(强调我的):

The JAAS Specification describes the result of a successful login as a

javax.security.auth.Subject instance, which can contain zero or more

java.security.Principal objects in the return value of the

Subject.getPrincipals() method. However, it provides no guidance on

how to distinguish Principals that describe the individual user (and

are thus appropriate to return as the value of

request.getUserPrincipal() in a web application) from the Principal(s)

that describe the authorized roles for this user. To maintain as much

independence as possible from the underlying LoginMethod

implementation executed by JAAS, the following policy is implemented

by this Realm: […]

除此之外,从Java EE环境中,您甚至很少能够访问JAAS主题,甚至通常不会通过供应商特定的方法. JAAS远不是您认为的通用标准,特别是当它涉及Java EE时.

您可以以可移植方式访问的唯一内容是调用者主体和与之关联的角色,但即使这些内容也不一定是您的JAAS登录模块构造的确切调用者主体.

例如,JBoss AS使用自己的类复制此主体几次.因此,如果您的JAAS模块将kaz.zak.FooPrincipal存储到用户/调用者主体的Subject中,则HttpServletRequest#getUserPrincipal()可能会返回org.jboss.security.SimplePrincipal.唯一保证的是该实例上的getName()将返回相同的字符串.

有关此主题的更多背景知识:

最后一个来源基本上用不同的措辞说同样的事情;

Although it is possible to use JAAS within Tomcat as an authentication

mechanism (JAASRealm), the flexibility of the JAAS framework is lost

once the user is authenticated. This is because the principals are

used to denote the concepts of “user” and “role”, and are no longer

available in the security context in which the webapp is executed. The

result of the authentication is available only through

request.getRemoteUser() and request.isUserInRole().

This reduces the JAAS framework for authorization purposes to a simple user/role system that loses its connection with the Java Security Policy.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/533360.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java jive歌词_Java Jive_Manhattan Transfer with Phil Collins_高音质在线试听_Java Jive歌词|歌曲下载_酷狗音乐...

Manhattan Transfer with Phil Collins - Java Jive[id:$00000000][ar:曼哈顿行者爵士][ti:Java Jive (LP Version)][by:][hash:99bf26cac4ad13e15925a56eb724027f][al:][sign:][qq:][total:0][offset:0][00:00.05]The Manhattan Transfer - Java Jive[00:10.57]I …

java 3_Java 3 (Java的数据类型)

Java的数据类型主要内容:1Java数据类型的分类2.8种基本数据类型3.理解引用类型的特点一、什么是数据类型?计算机语言将数据按性质进行分类,每一类称为一种数据类型;数据类型定义了数据的性质、取值范围、存储方式、对数据所能进行…

java快捷键 --_Java中的快捷方式“或分配”(| =)运算符

如果是关于可读性,我就有了将测试数据与测试逻辑分离的概念。代码示例:// declare dataDataType [] dataToTest new DataType[] {defaultStock,defaultWholesale,defaultRetail,defaultDelivery}// define logicboolean checkIfAnyNegative(DataType []…

tcp网络通信教程 java_基于java TCP网络通信的实例详解

JAVA中设计网络编程模式的主要有TCP和UDP两种,TCP是属于即时通信,UDP是通过数据包来进行通信,UDP当中就会牵扯到数据的解析和传送。在安全性能方面,TCP要略胜一筹,通信过程中不容易出现数据丢失的现象,有一…

java博客论坛设计报告_javaweb课程设计报告个人博客网站的实现(Java).doc

javaweb课程设计报告个人博客网站的实现(Java)项目名称: 个人博客网站的实现(Java) 学生姓名:学 号:班 级:指导教师:2014年12月23日目录1 绪论11.1系统应用意义11.2主要设计任务11.3开发及运行环境11.3.1 JSP的基础——…

java replace stringbuilder_java.lang.StringBuilder.replace()方法实例

全屏java.lang.StringBuilder.replace()方法按照这个顺序,在指定的字符串的子字符串替换字符。子串开始在指定start的 索引,并延伸到该字符 end - 1,或如果序列的末端不存在这样的字符。声明以下是java.lang.StringBuilder.replace()方法的声…

中小学课java_java毕业设计_springboot框架的中小学排课与实现

这是一个基于java的毕业设计项目,毕设课题为springboot框架的中小学排课与实现, 是一个采用b/s结构的javaweb项目, 开发工具eclipsei/eclipse, 项目框架jspspringbootmybatis, 中小学排课与实现采用mysql进行数据存储, 并基于mybatis进行了orm实体关系映射, 该中小学排课与实现…

java 文件设置为只读文件系统_Java如何设置文件为只读?

在java编程中,如何设置文件为只读?此示例演示如何使用File类的file.setReadOnly()和file.canWrite()方法设置文件为只读模式。package com.yiibai;import java.io.File;public class ReadOnlyFile {public static void main(String[] args) {File file …

wordcount linux java_linux下在eclipse上运行hadoop自带例子wordcount

启动eclipse:打开windows->open perspective->other->map/reduce 可以看到map/reduce开发视图。设置Hadoop location.打开windows->show view->other-> map/reduce Locations视图,在点击大象后【new Hadoop location】弹出的对话框(Ge…

php java执行linux_java_java执行Linux命令的方法,本文实例讲述了java执行Linux命 - phpStudy...

java执行Linux命令的方法本文实例讲述了java执行Linux命令的方法。分享给大家供大家参考。具体实现方法如下:public class StreamGobbler extends Thread {InputStream is;String type;public StreamGobbler(InputStream is, String type) {this.is is;this.type …

java怎么接收前端请求_前端json post 请求 后端怎么接收

前端提交POST /api/test HTTP/1.1Host: 192.168.135.69:81Connection: keep-aliveContent-Length: 18Origin: http://192.168.135.69:81User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15…

minimum在java中的意思_Java Calendar getMinimum()用法及代码示例

Calendar类中的getMinimum(int calndr_field)方法用于返回此Calendar实例的给定日历字段(int calndr_field)的最小值。用法:public abstract int getMinimum(int calndr_field)参数:该方法采用一个参数calndr_field,该参数表示要操作的日历字段。返回值&…

django mysql 一对多_请教,django中 如何向带有外键(一对多和多对多)数据库中批量插入数据?...

已自行解决,代码如下:json格式:[{"标题": "小武","内容": "测试","类型":["情感","文学","散文"]"文章资源":[{"title":"小武.1…

安装php no permision,php安装过程中的No package ‘xxx’ found问题

php No package ‘oniguruma’ found今天安装php7.4的时候遇到这样的一个报错,然后yum install oniguruma oniguruma-devel,重试安装php,依然报错,又编译安装oniguruma,重试安装php,还是报错,问…

php httpclient.class.php,php实现httpclient类示例

class httpClient {public $buffer null; // buffer 获取返回的字符串public $referer null; // referer 设置 HTTP_REFERER 的网址public $response null; // response 服务器响应的 header 信息public $request null; // request 发送到服务器的 header 信息private $…

大学php老师,php高校教师总结计划系统

通过使用本系统,可以规范工作流程,提高办公效率,增强团队协同工作能力,实现科学的公文处理、事物管理、会议安排和人力管理,量化运营资源,预防管理真空,降低运行成本。还可以实现便利的信息发布…

好用的php空间,推荐国内三个优质的免费PHP空间

1.亿家免费国内PHP空间这是我见过最好的免费国内PHP空间了,这个BLOG就是由他的空间支撑的,所以你看到我这个空间的稳定,快速就代表着他们空间的优质了,推荐注册地址:www.e9china.net这个先要在他们论坛上发帖子&#x…

java处理脏数据,Java程序的脏数据问题

脏数据(Out-of-date data),指过时的数据。假如在您的java程序中存在脏数据,将或多或少地给软件系统带来一些问题,如:无法实时地应用已经发生改变的配置,软件系统出现一些莫名其妙的、难以重现的、后果严重的错误等等。…

制作自己的 Docker 容器

软件开发最大的麻烦事之一,就是环境配置。用户必须保证操作系统的设置,各种库和组件的安装,只有它们都正确,软件才能运行。docker从根本上解决问题,软件安装的时候,把原始环境一模一样地复制过来。 以 koa-…

notepad php源码,GitHub - CharlesKiki/Web-Notepad: 这是一个仿制有道云笔记的原生PHP小玩具。...

What is this?一个仿制笔记的Web应用。但是重点在于“重构”的乐趣。特点简言之,不使用框架就以原生的语言来开发一个网站,最大的好处就是最实现方法的理解会加深。但是不适用框架也意味着重复和冗余,这也导致了项目阅读时的阅读思路。设计稿…