gpt4 book ai didi

java - 具有外部身份验证的 Seam 安全性

转载 作者:行者123 更新时间:2023-11-30 11:58:33 25 4
gpt4 key购买 nike

我在 Weblogic 10.3.2 (11g) 上使用 Seam 2.2.1.CR1。我想使用外部 SSO(Oracle 提供的专有 SSO,基于 OID)。我想集成这个外部登录(登录屏幕属于 SSO)。请注意,我不想使用 LdapStore。如果我做对了,这将需要我的应用程序有一个登录页面,然后该页面将以某种方式连接到 LDAP 并登录。我想使用 SSO 提供的外部登录屏幕。

一些想法

我不认为使用此 SSO 登录的过程与使用 WebLogic 的任何身份 validator 有任何不同。使用 SSO 和默认身份 validator 上的 BASIC 身份验证,应用程序方面的结果是相同的:用户进入应用程序,并且在每个 HttpServletRequest 上,方法 getRemoteUser() 返回用户登录时使用的用户名(在SSO 或 BASIS 登录),并且 .isUserInRole('blah') 根据通过身份验证分配的角色返回 true/false。因此,我认为这两个身份验证在编程方面完全相同。

问题

我的问题是如何将其与 Seam Security 集成。 Seam in Action 解释了如何在应用程序中包含自定义登录屏幕,该屏幕填充身份组件和凭证组件。 Seam 然后使用这些组件来应用高级安全限制,例如 s:hasRole。

但是,在我的应用程序中,我想要登录屏幕。我想要的只是能够以某种方式使用 Seam Security 和我已经拥有的东西:HttpServletRequest 中的角色和用户名。

我找到了这个线程(见最后),但我不确定我是否完全理解。例如,一个问题是扩展身份是否是我所需要的。

另一个问题是,在《Seam in Action》中,丹·艾伦 (Dan Allen) 说拥有登录页面是强制性的,但我不想拥有。从第 449 页开始:

Only Seam isn’t going to know where to direct a nonauthenticated user when this page is requested because you haven’t specified a login page. If a login page hasn’t been set, Seam throws a NotLoggedInException.

一般来说,我认为将外部 SSO(或任何应用服务器 validator )与 Seam 集成的文档仍然很少,尽管这是一个非常常见的业务需求。我想我们都会坚持到大家完成 Seam 3。

与此同时,有任何一般/具体的指示吗?

干杯!

-- http://seamframework.org/Community/HelpWithIdentityloginAndAcceptExternallyAuthenticatedPrincipal

最佳答案

它适用于 Seam 2.x。

在 pages.xml 中创建一个假的登录 View 页面。然后,将它与 或类似的东西一起用于外部登录。

然后,添加导航规则以重定向到该导航 View 中的成功/失败登录页面。

并且您需要覆盖身份验证方法。

像这样:

<page view-id="/fakeLogin.xhtml">
<action execute="#{identity.login}" if="#{not identity.loggedIn}" />
<param name="username" />
<navigation from-action="#{identity.login}">
<rule if="#{identity.loggedIn}">
<redirect view-id="/home.xhtml"/>
</rule>
<rule if="#{not identity.loggedIn}">
<redirect view-id="/error.xhtml"/>
</rule>
</navigation>
</page>

和:

@In(required = true)
private String username;

@In
Identity identity;

public boolean authenticate() {
//...
throw new AuthorizationException("login failed");
//...
return true;
}

关于java - 具有外部身份验证的 Seam 安全性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3155826/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com