代码之家  ›  专栏  ›  技术社区  ›  Markos Fragkakis

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

  •  2
  • Markos Fragkakis  · 技术社区  · 16 年前

    一些想法

    我看不出使用这个SSO登录的过程与使用任何WebLogic的验证器没有什么不同。对于SSO和默认验证器上的基本身份验证,应用程序的结果是相同的:用户进入应用程序,在每个HttpServletRequest上,getRemoteUser()方法返回用户登录时使用的用户名(在SSO或BASIS登录上),根据分配的角色('true/inrh')返回true/false。所以,我认为这两个身份验证是完全相同的,从编程角度来说。

    问题

    但是,在我的申请中 想要一个登录屏幕。我所希望的是能够以某种方式使用Seam安全性和我已经拥有的东西:HttpServletRequest中的角色和用户名。

    我找到了这条线(见末尾),但我不太清楚。例如,一个问题是,我是否需要扩展标识。

    另一个问题是,在Seam-in-Action中,danallen说拥有一个登录页面是强制性的,我不想这样做。摘自第449页:

    只有Seam不知道去哪里 指示未经身份验证的用户 请求此页是因为您 登录页面尚未设置,Seam 抛出NotLoggedInException。

    同时,有什么一般的/具体的指示吗?

    干杯!

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

    1 回复  |  直到 16 年前
        1
  •  1
  •   gorlok    15 年前

    它适用于Seam 2.x。

    在中创建假登录视图页面页面.xml. 然后,将其与或类似的外部登录一起使用。

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

    您需要重写身份验证方法。

    像这样:

    <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;
    }