2017-06-25 12 views
0

Websphere LibertyにOpenID Connectプロバイダを使用するように定義しました。次の機能を使用します。openidConnectClient-1.0Websphere LibertyのOpenID SSOは、ブラウザを再オープンするたびに認証が必要です。

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> 

答えて

1

ユーザーの認証ステータスは、お使いのSSOサーバによって維持されています。 Libertyのセキュリティセッションが終了するか、ブラウザが閉じられて再度開くと、LibertyはユーザーをSSOサーバーにリダイレクトします。ブラウザがSSOサーバーとの有効なセッションを維持している場合、ユーザーは再ログインを要求されません。ただし、SSOサーバーがブラウザのセッションCookieを使用してユーザーの認証ステータスを維持する場合、ユーザーはSSOサーバーに再度ログインするよう求められます。したがって、この動作はSSOサーバーによって制御されます。

+0

'ltpa'トークンを使用してログイン時間を延長できますか? – Anatoly

+0

Liberty openid connectクライアントは、セッション時間としてltpaの有効期限を使用するように、またはセッション時間としてid_tokenの有効期間を使用するように設定できます。デフォルトの動作はltpaの有効期限で、ltpaの有効期限を長くすることができます。 – Chunlong

+0

私はそれを達成しようとしたことがわかります。私の 'server.xml'の' ltpa'期限は '100h'ですが動作しません。たぶん私は正しい方法で自分自身を記述していませんでしたが、私は 'ltpa'を使ってログイン時間を費やす方法を指摘しました。 – Anatoly