我认为我对WebLogic的知识有很高的了解AuthenticationProviders
,但是我无法理解如何将用户凭据传递给提供程序。
在阅读JAAS时,我想我已经掌握了如何使用aLoginContext
来执行登录。在LoginContext
上拿起LoginModule
从JAAS配置文件和JAAS选项。通过定义some的实例CallbackHandler
,您可以传递用户凭据。调用后LoginContext.login()
,将使用关联的登录LoginModule
。
在查阅完Oracle的文档之后AuthorizationProviders
,大多数内容似乎非常简单。一个AuthenticationProvider
利用JAAS执行登录。似乎AuthenticationProvider
是LoginContext
内部管理人员。
我很难理解/发现的是WebLogic如何管理LoginContext
和CallbackHandler
最终传递给该LoginModule.initialize
方法的方法。
该应用程序:
当前,该应用程序使用表单登录名并通过“ j_security_check”操作提交。有一个自定义AuthenticationProvider
,LoginModule
它处理登录并处理表单中提交的用户名和密码。
我假设WebLogic可以在内部处理“ j_security_check”操作,并且知道如何将表单输入字段映射到CallbackHandler
传递给custom的LoginModule
。
我正在尝试创建第二个登录过程,该过程涉及从HTTP请求标头中提取凭证(用户名/密码)。当前使用servlet过滤器提取凭证。一种或另一种方式,我想将这些凭据传递给LoginModule
表单登录所用的凭据。
我想执行以下其中一项操作:
AuthenticationProvider
(通过一些自定义AuthenticationProvider
实现和/或配置)AuthenticationProvider
。如何将标头凭据传递给LoginModule
?
AuthenticationProvider
可以从标头中提取用户名和密码的预定义?您能描述从请求到登录的流程吗?CallbackHandler
或LoginContext
使用AuthenticationProvider
?这样,我可以将凭据传递给AuthenticationProvider
自己。AuthenticationProvider
?我很可能会在此过程中遗漏一些关键概念,因此请随意将我提到的内容带入正确的轨道。
谢谢!
了解WebLogic的最大障碍AuthenticationProviders
在于了解如何传递凭据。似乎有很多事情“自动地”发生在幕后。我觉得我不得不以某种方式访问后台运行的WebLogicLoginContext
和/或CallbackHandler
WebLogic。我在正确的轨道上,但是错过了有关JAAS身份验证的重要信息...
身份验证提供程序-JAAS如何与WebLogic安全框架一起使用
JAAS认证的步骤3和4列出如下:
WebLogic Server容器调用WebLogic安全框架。如果存在包含身份验证信息的客户端CallbackHandler,则将其传递到WebLogic安全框架中。
对于每个配置的身份验证提供程序,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] 删除。
我来说两句