JAAS认证新手;使用 URL 栏中的令牌登录 [关闭]

2023-12-02

我有一个有趣的项目要求,我们必须接受令牌作为 GET 参数,以对进入应用程序的用户进行身份验证。这是为了允许受信任的第三方将用户无缝地发送到我们的网站,而无需让他们再次登录。

一个例子可能是:http://www.myproj.com/appName/index.jsf?user_token=asdf123randomstuffaf12fsaasdf

appName 将是上下文根, user_token 将是可以检查的令牌。令牌将使用一次,然后被丢弃,并且它们在生成后几秒钟后过期。令牌部分并不是我真正关心的,它是与 JAAS 的集成。

在 Spring Security 中,我可以设置一个过滤器来拦截请求,从 URL 中提取令牌,并根据 UserDetailsS​​ervice 对用户进行身份验证。遗憾的是,由于许多问题,Spring Security 在该项目中不可用,因此我们需要使用 JAAS 身份验证。

我不是要求代码,但我可以使用一些关于需要编写哪些模块的基本方向,以便我可以继续我的研究。感谢大家,


JAAS 不太适合 Web 应用程序。它更适用于支持交互式输入和访问 JVM 管理的本地资源(例如文件、网络套接字)的桌面应用程序。

但如果您确实想走 JAAS 之路,请准备编写自定义 LoginModule 以及可能的 CallbackHandler 和委托人。最重要的类是 LoginModule。您也许可以重用一些现有的 Primary 类。

CallbackHandler 将从 URL 中提取令牌。 LoginModule 会根据某个数据库查找该令牌,并用一些主体填充传入的主题。

这可能听起来令人困惑,因为术语非常接近(Subject 与 Primary、LoginModule 与 CallbackHandler),因此文档应该相距很近。

完成所有这些后,您还需要配置 Web 容器的策略来加载新的登录上下文(另一个非常相关的术语)。这就像在 Linux 中配置 PAM。请您的管理员为您执行此操作。

但你还没有完成。最后一个任务是编写一个(我假设您正在开发基于 Java Servlet 的东西)过滤器。这个过滤器应该挂在第一层。如果它看到特殊参数值(例如 user_token),它将获取配置的 LoginContext 对象,并调用其登录方法。

现在,如果您完全放弃 JAAS,您可以只使用 servlet 过滤器。在此过滤器中,如果身份验证成功,您可以使用您自己的自定义对象(例如 User 对象)填充会话对象以表示成功。简单多了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JAAS认证新手;使用 URL 栏中的令牌登录 [关闭] 的相关文章

随机推荐

  • ThreeJS:3D 对象面积计算(三角测量)

    我需要在 ThreeJS 中计算整个对象的面积 表面积 这就是我所拥有的 var len object geometry faces length area 0 0 if len return 0 0 for var i 0 i lt le
  • Jackson注释中的多态性:@JsonTypeInfo用法

    我想知道是否 JsonTypeInfo注解可以用于接口 我有一组应该序列化和反序列化的类 这就是我正在尝试做的事情 我有两个实现类Sub1 Sub2实施MyInt 一些模型类具有实现类型的接口引用 我想基于多态性反序列化对象 JsonTyp
  • 在 Flash 中播放 MIDI 文件

    有没有办法在Flash中播放MIDI文件 使用动作脚本 3 None
  • 眼睛空间坐标到底是什么?

    当我学习 OpenGL 时 我经常偶然发现所谓的眼空间坐标 如果我是对的 你通常有三个矩阵 模型矩阵 视图矩阵和投影矩阵 虽然我不完全确定其背后的数学原理是如何工作的 但我确实知道将坐标转换为世界空间 视图空间和屏幕空间 但是眼睛空间在哪里
  • Git 提交消息:50/72 格式

    Tim Pope 在他的博文中主张采用特定的 Git 提交消息样式 http www tpope net node 106 以下是他的建议的快速摘要 第一行不超过 50 个字符 然后是一个空行 剩余文本应以 72 个字符换行 他的博客文章给
  • QFile 打开文件写入失败

    我正在尝试打开文件并向其中写入一些文本数据 QFile out test txt if out open QIODevice ReadWrite QMessageBox msgBox msgBox setText out errorStri
  • Python virtualenv 问题

    我在 Windows XP 上使用 VirtualEnv 我想知道我的大脑是否正确地围绕它 I ran virtualenv ENV它创造了C WINDOWS system32 ENV 然后我改变了我的PATH要包含的变量C WINDOWS
  • 矩阵的块对角绑定

    R 是否具有将矩阵绑定为块对角形状的基函数 以下可以完成这项工作 但我想知道是否有标准方法 a lt matrix 1 6 2 3 b lt matrix 7 10 2 2 rbind cbind a matrix 0 nrow nrow
  • 复制包含索引的表

    有没有办法在 SQL Server 中复制表 不仅仅是像这样的数据SELECT INTO还可以索引 也许还有键 如果我走脚本表为 gt 创建到它遗漏了我的索引 如果此功能不可用 为什么不呢 我确信这个问题肯定被问了 1000 次 但我找不到
  • 关于C中的qsort(),** buf和buf[][]的区别

    当我在 Mac 上的 C 语言中使用 qsort 时 这些代码运行良好 它可以很好地对一个文件中的每一行进行排序 int compare const void p const void q return strcmp p q void fu
  • 如何在jtree中仅列出非隐藏和非系统文件

    File f new File C File fList f listFiles 当我使用它时 它会列出所有系统文件以及隐藏文件 而这个原因空指针异常当我用它在 jTree 中显示时 如下所示 public void getList Def
  • 从所有浏览器注销用户

    我在用着表单验证mechanizm 和 auth 用户通过 FormsAuthentication SetAuthCookie Can I logout当前用户来自所有浏览器不知何故 在认证参数中添加一个guid参数 还将 guid 保存到
  • 动态CRM插件下载Word文档

    我创建了 CRM 插件 在创建案例时需要将文档下载到客户端 当我创建案例时 插件正在工作 但它不下载文档 在控制台中我可以看到通过 POST 请求返回文档内容 AppWebServices InlineEditWebService asmx
  • 如何将从 sha1 字节数组生成的字符串返回到该字节数组?

    首先很抱歉英语不好 好吧 我想从 torrent 文件中读取片段哈希信息 目前 我正在使用https github com hyPiRion java bencode这个 Bencode 库来解码信息 但我的问题是当我想将片段字符串转换为字
  • 自定义MKOverlayRenderer drawMapRect函数不绘制多边形

    我构建了一个自定义 MKOverlayRenderer 来构建多边形 应用混合模式 然后将它们添加到地图视图中 在我的drawMapRect函数中 我使用CGPoints数组来构建多边形 并创建一条路径 但是 在运行时 我的地图视图上没有显
  • JavaScript:一个变量可以有多个值吗?

    除了 jQuery 之外 我对 JavaScript 还很陌生 我正在阅读 JavaScript 数组中的随机化以及使用带有随机数的 Array sort 方法的缺点 我看到建议是使用 Fisher Yates 洗牌 查看此方法的 Java
  • 导入错误:没有名为 base 的模块

    我正在尝试为我的第一次登录测试实现 PageObject 模式 运行时我收到以下错误 gt gt py test v test login py test session starts platform linux2 Python 2 7
  • Django OneToOne 反向关系当空时DoesNotExists

    我正在使用 Django 1 8 3 以及 Rest Framework 和 json api https github com django json api django rest framework json api 我有这种一对一的
  • Java 中的斐波那契数列耗时太长?

    我试图在 Java 中找到斐波那契数列的总和 但运行时间太长 或者是应该的 每当我使用超过 40 的整数时 速度都会变慢 注意 在 50 时 返回负值 这让我很困惑 有什么建议吗 public static void main String
  • JAAS认证新手;使用 URL 栏中的令牌登录 [关闭]

    Closed 这个问题需要多问focused 目前不接受答案 我有一个有趣的项目要求 我们必须接受令牌作为 GET 参数 以对进入应用程序的用户进行身份验证 这是为了允许受信任的第三方将用户无缝地发送到我们的网站 而无需让他们再次登录 一个