如何将用户凭据传递到WebLogic 11g身份验证提供程序?

起司

我认为我对WebLogic的知识有很高的了解AuthenticationProviders,但是我无法理解如何将用户凭据传递给提供程序。


我的理解

在阅读JAAS时,我想我已经掌握了如何使用aLoginContext来执行登录。LoginContext上拿起LoginModule从JAAS配置文件和JAAS选项。通过定义some的实例CallbackHandler,您可以传递用户凭据。调用后LoginContext.login(),将使用关联的登录LoginModule

在查阅完Oracle的文档之后AuthorizationProviders,大多数内容似乎非常简单。一个AuthenticationProvider利用JAAS执行登录。似乎AuthenticationProviderLoginContext内部管理人员

我很难理解/发现的是WebLogic如何管理LoginContextCallbackHandler最终传递给该LoginModule.initialize方法的方法。


情况

该应用程序:

  • 在WebLogic 11g(10.3.6)上运行的Java Web应用程序。
  • 尝试使用用户名和密码进行身份验证,而无需登录表单。

当前,该应用程序使用表单登录名并通过“ j_security_check”操作提交。有一个自定义AuthenticationProviderLoginModule它处理登录并处理表单中提交的用户名和密码。

我假设WebLogic可以在内部处理“ j_security_check”操作,并且知道如何将表单输入字段映射到CallbackHandler传递给custom的LoginModule


我的目标

我正在尝试创建第二个登录过程,该过程涉及从HTTP请求标头中提取凭证(用户名/密码)。当前使用servlet过滤器提取凭证。一种或另一种方式,我想将这些凭据传递给LoginModule表单登录所用的凭据

我想执行以下其中一项操作:

  1. 直接从标题中获取凭据,并将其传递给AuthenticationProvider(通过一些自定义AuthenticationProvider实现和/或配置)
  2. 使用Servlet过滤器提取标头凭据,然后将其手动传递给AuthenticationProvider

我的问题

如何将标头凭据传递给LoginModule

  1. 是否存在AuthenticationProvider可以从标头中提取用户名和密码的预定义您能描述从请求到登录的流程吗?
  2. 是否可以通过某种方式访问CallbackHandlerLoginContext使用AuthenticationProvider这样,我可以将凭据传递给AuthenticationProvider自己。
  3. WebLogic如何知道从何处获取用户凭证以及如何将其绑定到特定凭证AuthenticationProvider

我很可能会在此过程中遗漏一些关键概念,因此请随意将我提到的内容带入正确的轨道。

谢谢!

起司

了解WebLogic的最大障碍AuthenticationProviders在于了解如何传递凭据。似乎有很多事情“自动地”发生在幕后。我觉得我不得不以某种方式访问后台运行的WebLogicLoginContext和/或CallbackHandlerWebLogic。我在正确的轨道上,但是错过了有关JAAS身份验证的重要信息...

身份验证提供程序-JAAS如何与WebLogic安全框架一起使用

JAAS认证的步骤3和4列出如下:

  1. WebLogic Server容器调用WebLogic安全框架。如果存在包含身份验证信息的客户端CallbackHandler则将其传递到WebLogic安全框架中

  2. 对于每个配置的身份验证提供程序,WebLogic安全框架都使用传入的身份验证信息来创建CallbackHandler (这些是由WebLogic安全框架在服务器端创建的内部CallbackHandler,与客户端的CallbackHandler不相关。)

这就是让我失望的部分。我的想法被CallbackHandler传递通过WebLogic的身份验证信息。我无法接听步骤结尾处显示的注释:

注意事项

对于完全在服务器端执行的身份验证,该过程将从步骤3开始,并且WebLogic Server容器将在步骤4之前调用weblogic.security.services.authentication.login方法。

身份验证-方法摘要

而且您不知道吗...Authentication有四个login方法,每个方法都接受一个CallbackHandler

就我的情况而言,我可以使用servlet过滤器从请求标头中选择凭证,将其传递给CallbackHandler,然后调用Authentication.login(CallbackHandler callbackHandler)以使用custom成功登录LoginModule

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

身份验证提供程序未出现在WebLogic Server版本的身份验证器列表中:12.1.3.0.0

Xcode 11 SPM身份验证失败,因为未提供凭据

如何将Windows身份验证凭据从客户端传递到Web API服务

猫鼬用户模型,用于处理本地和社交身份验证提供程序

如何将自定义身份验证提供程序集成到IdentityServer4中

如何通过Symfony 3身份验证使用自定义用户提供程序

未提供身份验证凭据。部署到AWS时

如何将身份验证/凭据传递给我从python运行的google cloud api帖子

使用AAD身份验证提供程序获取当前登录的用户

SSRS表单身份验证-如何将Cookie凭据传递到报表服务器

如何使用从Google身份验证提供程序返回的信息来提供对数据的访问

Flutter Firebase身份验证-取消链接身份验证提供程序不会导致原始(匿名)用户

如何处理多个身份验证提供程序(firebase)

如何将代理凭据传递到不支持代理凭据的应用程序上?

Symfony2定制用户提供程序未进行身份验证/登录

Spring使用匿名身份验证提供程序来使用来宾用户

在Oracle WebLogic Server 12.1.2.0.0中创建自定义身份验证提供程序

如何将自定义对象从自定义身份验证提供程序传递到控制器?

如果用户已通过身份验证,则使用 express 为 Angular 应用程序提供服务

我应该如何为 Firebase 身份验证创建新的联合身份提供程序

laravel 5.5 多重身份验证错误“InvalidArgumentException 身份验证用户提供程序 [] 未定义。”

"detail": "未提供身份验证凭据。"

如何将用户电子邮件从 Firebase 身份验证检索到实时数据库

未提供 Django 身份验证凭据

“未提供身份验证凭据。” 在 DRF

如何将 Keycloak 设置为 humhub 的身份验证提供程序

如何将用户凭据传递到 Kubernetes Pod 内的(受用户限制的)挂载卷?

如何获取在 Firebase Authentication for Web 中对当前用户进行身份验证的身份验证提供程序?

Spring Authorization Server 0.2.2,如何禁用(OAuth2TokenRevocation)之类的默认身份验证提供程序并用自定义的身份验证提供程序覆盖它?