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.

java ee jaas_java-ee – Tomcat-Jaas – 如何检索主题?相关推荐

  1. jakarta_适用于Java EE / Jakarta EE开发人员的Micronaut

    jakarta 城镇中有一个名为Micronaut的新微服务框架. 在这篇文章中,我将从Java EE / Jakarta EE的角度讨论如何冒险使用Micronaut框架. 我是Java EE开发人 ...

  2. jakarta ee_适用于Java EE / Jakarta EE开发人员的Micronaut

    jakarta ee 城镇中有一个名为Micronaut的新微服务框架. 在本文中,我将从Java EE / Jakarta EE的角度讨论如何冒险使用Micronaut框架. 我是Java EE开发 ...

  3. 适用于Java EE / Jakarta EE开发人员的Micronaut

    城镇中有一个名为Micronaut的新微服务框架. 在本文中,我将从Java EE / Jakarta EE的角度讨论如何冒险使用Micronaut框架. 我是Java EE开发人员,因此使用诸如Ec ...

  4. Java学习路线,Java SE,EE,ME的区别,SSM框架基本概念

    1.尚硅谷 视频课程:https://www.bilibili.com/read/cv5216534 初学者可按照尚硅谷公开的JAVA视频最快学习路线: JavaSE --> MySQL–> ...

  5. JAVA SE、EE、ME,JRE、JDK,基本数据类型,访问修饰符、函数、封装的概念、UML类图、构造方法、this关键字、static关键字、方法重载、方法重写、包(packahe)

    运行第一个JAVA程序: 这里使用的开发环境是eclipse,新建一个java工程,然后可以看到src这个是存放java代码的地方,然后在src文件右击新建一个class(类),然后可以看到下图,同样 ...

  6. 01_Weblogic课程之概念篇:代理服务器,web服务器,应用程序服务器,JNDI概念,JTA概念,Java消息服务,Java验证和授权(JAAS),Java管理扩展,Web客户机,客户机应用程序

     1 什么是服务器 Weblogic中服务器分为两种,一种是受管服务器,另外一种是管理服务器. Weblogic课程(Weblogic是Oracle公司的,最开始的是BEA公司的) 一 系统管理 ...

  7. java项目如何启动tomcat服务器,Java web项目启动Tomcat报错解决方案

    Java web项目启动Tomcat报错解决方案 点击运行项目时显示 A Java Exception has occurred. 'Starting Tomcat v9.0 Server at lo ...

  8. Java后端WebSocket的Tomcat实现

    转自: http://blog.chenzuhuang.com/archive/28.html http://www.cnblogs.com/xdp-gacl/p/5193279.html 一.Web ...

  9. Java后端WebSocket的Tomcat实现(转载)

    一.WebSocket简单介绍 随着互联网的发展,传统的HTTP协议已经很难满足Web应用日益复杂的需求了.近年来,随着HTML5的诞生,WebSocket协议被提出,它实现了浏览器与服务器的全双工通 ...

  10. eclipse配置tomcat,并部署一个Java web项目到tomcat上

    eclipse配置tomcat 1.windows--preference 2.server--Runtime  Environment 3.Add 下图中第2表示:选中自己安装tomcat的目录 创 ...

最新文章

  1. 医保费用监控指标体系建立(四)医疗机构指标分析
  2. 我会永远永远的爱你,直到你不爱我的那一天
  3. 使用fn函数控制页面显示内容
  4. java读取大txt文件_Java读取具有7000万行文本的大文本文件
  5. php链接mysql数据库
  6. 20145236《网络攻防》 Exp3 免杀原理与实践
  7. 新华三(H3C)校园招聘技术类笔试题2019
  8. 关于SQL2005安装后更改计算机名后…
  9. OSChina 周三乱弹 ——程序员是将咖啡转变成代码的工具
  10. uploadify上传文件在360浏览器急速模式下失败
  11. 老九学堂 学习C++ 第九天
  12. 巨头集体跨界,老玩家悄然出圈,谁在争夺6亿电竞用户?
  13. 图像传感器binning_CMOS图像传感器调试问题汇总
  14. feishu-飞书api
  15. Linux-dd命令详解
  16. 【ArcGIS错误异常100问】之002:Error 000735 简化容差:值是必需的(简化线、简化面工具)
  17. 贰零贰壹·陆·伍·|比赛|·|创客|:第二十届自治区青少年机器人竞赛心得总结
  18. 生成世界地图并在地图上画圆圈
  19. 【计组期末复习一】第八章:CPU的结构和功能 :指令中各有哪些字段?变址寻址和基址寻址异同?如何设计计算机指令?如何求寻址范围?
  20. 牛客网SQL--某东篇

热门文章

  1. 企业实战_12_MyCat水平扩展_分库分表
  2. MyBatis-Plus_AR 模式
  3. 前端的葵花宝典 - 红宝书《JavaScript高级程序设计(第4版)》学习笔记
  4. Java-数据类型拓展
  5. 酷睿i7cpu适合的linux,CPU性能篇 - Core i7-4770K Linux之旅:有喜有忧_Linux新闻_Linux公社-Linux系统门户网站...
  6. c语言switch caseh(op),switch语句求教
  7. xib 设置阴影_影响uiview阴影的约束?
  8. pythonmysql查询转list_python 数据库查询结果转对象
  9. blob字段乱码怎么处理_下载的附件名总乱码?你该去读一下 RFC 文档了!
  10. Python callable 函数 - Python零基础入门教程