【问题标题】:OpenID SSO in Websphere Liberty requires authentication every time I reopen a browser每次我重新打开浏览器时,Websphere Liberty 中的 OpenID SSO 都需要身份验证
【发布时间】:2017-06-25 14:45:50
【问题描述】:

我已通过使用以下功能将 Websphere Liberty 定义为使用 OpenID Connect Provider:openidConnectClient-1.0

除了 Liberty 要求用户在每次打开浏览器时进行身份验证(即关闭浏览器删除所有身份验证详细信息)之外的所有工作文件。我的配置有什么问题,或者我错过了什么?

server.xml:


<featureManager>
    <feature>jdbc-4.1</feature>
    <feature>jndi-1.0</feature>
    <feature>ldapRegistry-3.0</feature>
    <feature>appSecurity-2.0</feature>
    <feature>localConnector-1.0</feature>
    <feature>servlet-3.1</feature>
    <feature>openidConnectClient-1.0</feature>
    <feature>adminCenter-1.0</feature>
    <feature>webCacheMonitor-1.0</feature>
    <feature>jaxrs-1.1</feature>
</featureManager>

<keyStore id="defaultKeyStore" password="xxxxxxx"/>

<httpEndpoint host="*" httpPort="9080" httpsPort="9443" id="defaultHttpEndpoint"/>

<openidConnectClient authFilterRef="applicationFilter"
                     authorizationEndpointUrl="https://xxxxxxxxxxx/authorize" 
                     clientId="xxxxxxxx"
                     clientSecret="xxxxxxxxxx" 
                     createSession="false" 
                     disableLtpaCookie="false" 
                     grantType="authorization_code" 
                     httpsRequired="true" 
                     id="sso_liberty" 
                     issuerIdentifier="https://xxxxxxxx" 
                     responseType="code" 
                     scope="openid" 
                     signatureAlgorithm="RS256" 
                     tokenEndpointAuthMethod="post" 
                     tokenEndpointUrl="https://xxxxxxxxxxxx/token" 
                     trustAliasName="application_sso" 
                     trustStoreRef="defaultKeyStore" 
                     userIdentityToCreateSubject="sub">
</openidConnectClient>

<ltpa expiration="100h" 
        keysFileName="${server.output.dir}/resources/security/ltpa_new.keys" 
        keysPassword="xxxxx"/>
<authCache timeout="100h"/>

<applicationMonitor updateTrigger="mbean"/>


<ldapRegistry baseDN="O=xxxxxx.COM" 
                host="xxxxx.xxxxx.com" 
                id="LDAP" 
                ignoreCase="true" 
                ldapType="IBM Tivoli Directory Server" 
                port="xxxxx" 
                realm="xxxxxxxxx" 
                searchTimeout="8m">
    <idsFilters groupFilter="xxxxxx" 
                    groupIdMap="xxxx"  
                    groupMemberIdMap="xxxxx" 
                    userFilter="xxxxx" 
                    userIdMap="xxxxx">
    </idsFilters>
</ldapRegistry>

<authFilter id="applicationFilter">
    <webApp id="application.angular" matchType="contains" name="application.angular"/>
    <requestUrl matchType="notContain" urlPattern="/api/icalfeed"/>
</authFilter>

<webApplication id="application.angular" location="application.angular.war" name="application.angular">
    <classloader apiTypeVisibility="spec, ibm-api, third-party"  />
    <application-bnd>
        <security-role name="All Role">
            <special-subject type="ALL_AUTHENTICATED_USERS" />
        </security-role>
    </application-bnd>
</webApplication>

【问题讨论】:

    标签: websphere single-sign-on openid websphere-liberty


    【解决方案1】:

    用户的身份验证状态由您的 SSO 服务器维护。如果 Liberty 安全会话过期或浏览器关闭并重新打开,Liberty 会将用户重定向到 SSO 服务器,如果浏览器仍与 SSO 服务器保持有效会话,则不会提示用户重新登录。但是,如果您的 SSO 服务器使用浏览器会话 cookie 来维护用户的身份验证状态,用户将被要求重新登录到您的 SSO 服务器。所以行为是由 SSO 服务器控制的。

    【讨论】:

    • 我可以使用ltpa 令牌来延长登录时间吗?
    • Liberty openid 连接客户端可以配置为使用 ltpa 过期时间作为会话时间,或者使用 id_token 生命周期作为会话时间。默认行为是 ltpa 过期时间,您可以增加 ltpa 过期时间。
    • 你可以看到我试图实现它,我的server.xml中的ltpa过期时间是100h但它不起作用。也许我没有以正确的方式描述自己,但我的意思是如何使用ltpa 来延长登录时间。
    • ltpa cookie 是浏览器会话 cookie,如果浏览器关闭,ltpa cookie 就消失了。你的sso服务器是什么?重新打开浏览器后,SSO 服务器能否保持身份验证会话?如果 SSO 服务器无法维护经过身份验证的用户会话,用户将不得不重新登录
    猜你喜欢
    • 1970-01-01
    • 2018-09-27
    • 2021-12-21
    • 1970-01-01
    • 2018-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多