使用 WebSphere Portal 和 IBM Worklight 交付出色的移动 Web 体验,第 3 部分: 使用 Worklight and WebSphere Portal 实现自动单点登录

越来越多的企业为其 Web 渠道社区提供多渠道支持。本文将介绍 IBM® WebSphere® Portal 和 IBM Worklight™ 如何帮助企业创建 Worklight,这些应用程序能够在启动时自动登录一位用户,同时使用单点登陆 (SSO) 让该用户登录到相同主机上的 WebSphere Portal 服务器中。这使移动应用程序能够从该应用程序中显示为用户定制的门户页面。

Spencer Brooks, 前端工程师, IBM

Spencer Brooks 是 IBM 三角公园研发实验室的一名前端工程师。在进行 WebSphere Portal 开发期间,他主要执行主题开发。



2013 年 5 月 27 日

简介

本文将介绍如何设置一个混合 IBM Worklight 应用程序,它在启动时让一位用户自动登录到一个设置了单点登陆 (SSO) 的服务器,并且同一主机上拥有 IBM WebSphere Portal 服务器。为服务器设置 SSO,用户只需登录 Worklight 服务器一次,以后系统就会自动对同一主机上的其他服务器执行身份验证。

许多移动应用程序还能够存储用户凭据,这样您打开应用程序就能看到此信息。要将此功能添加到示例应用程序中,可以利用在 Worklight 中实现加密的缓存来存储用户登录信息,这些信息科供以后登录使用。这使得用户打开应用程序就能登录到他们在 Worklight 和 WebSphere Portal 服务器上的帐户。

先决条件

本文使用了 WebSphere Portal V8 和 Worklight V5.0.0.3。尽管这里使用了 WebSphere Portal,但任何通过 LDAP 用户注册表和 LTPA 令牌身份验证来支持 SSO 的服务器都应兼容这些设置的正确配置。

继续完成本练习之前,确保您已经执行以下操作:

  • 安装并运行一个 LDAP 服务器。
  • 安装并运行 WebSphere Portal V8 服务器。
  • 安装了带有默认的 Liberty 配置文件和 Derby 数据库的 IBM Worklight Server。

因为您将在运行 Worklight 的 Liberty 配置文件服务器与 WebSphere Portal 服务器之间设置 SSO,所以需要将两个服务器配置为使用相同的用户注册表、共享 LTPA 键,并将它们设置为对 SSO 使用指定的域。


设置 Liberty 配置文件服务器

安装带有默认 Liberty 配置文件和 Derby 数据库的 Worklight Server 之后,需要将该服务器配置为使用 LDAP 服务器。Liberty 配置文件通过它使用的一组默认设置来处理配置,除非您在 server.xml 文件中另行指定设置。具体操作取决于您使用的是 Linux® 还是 Windows®。此文件位于:

  • Linux:<WorklightInstallDirectory>/server/wlp/usr/servers/worklightServer/server.xml
  • Windows:<WorklightInstallDirectory>\WAS85liberty-server\server\wlp\usr\servers\worklightServer\server.xml

在 server.xml 文件内执行以下这些更改:

  1. 更改 JSESSION cookie 的名称,防止它与 WebSphere Portal 服务器发生冲突。为此,请将 httpSession XML 标记添加到结束 httpEndpoint 标记之后,按清单 1 所示设置 cookie 名称属性。
    清单 1. JSESSIONID 名称更改
    <httpEndpoint host="*" httpPort="9080" httpsPort="9443" id="defaultHttpEndpoint"> 
       <!-- Begin of options added by IBM Worklight installer. --> 
       <tcpOptions soReuseAddr="true"/> 
       <!-- End of options added by IBM Worklight installer. --> 
    </httpEndpoint> 
    <httpSession cookieName="JSESSIONID_wl"/>
  2. 删除安装的默认用户注册表。如果激活多个用户注册表,那么服务器将会出现错误。找到 basicRegistry 分段(如清单 2 所示)并删除它。
    清单 2. 基本的注册表项
    <!-- Declare the user registry for the IBM Application Center. --> 
    <basicRegistry id="applicationcenter-registry" realm="ApplicationCenter"> 
    <!-- The user "appcenteradmin" has special privileges within the IBM
         Application Center. -->
    	    <user name="appcenteradmin" password="admin"/> 
    	    <!-- The other users have normal privileges. --> 
    	    <user name="demo" password="demo"/> 
    	    <group name="appcentergroup"> 
    	        <member name="appcenteradmin"/> 
    	        <member name="demo"/> 
    	    </group> 
    </basicRegistry>
  3. 接下来,您将添加 LDAP 用户注册表。清单 3 给出了所使用配置的一个示例;但是,粗体显示的信息需要依据您设置 LDAP 的方式而进行相应的修改。Liberty 配置文件还添加了更多的过滤器,比如 userFilter 仅适用于 LDAP 服务器的其他方面(比如组)。此外,如果您的 LDAP 服务器设置为使用 SSL,那么还有一些可供您用于配置的选项。参阅信息中心,了解 server.xml 配置选项连接到使用 SSL 的 LDAP 服务器 的更多信息。
    清单 3. LDAP 配置 XML
    <ldapRegistry id=”ldap” 
        realm=”defaultWIMFileBasedRealm” 
        host=”<ldap host>” 
        port=”389” 
        ignoreCase=”true”
        baseDN=”dc=ibm,dc=com”
        bindDN=”cn=root”
        userFilter=”(&(uid=%v)(objectclass=inetOrgPerson))”
        bindPassword=”<password>”
        ldapType=”IBM Tivoli Directory Server”>
    </ldapRegistry>
  4. 将服务器安全性更改为使用将被设置为正确域的 SSO cookie,这可以在完成 ldapRegistry 项的设置之后就进行设置。将下面加粗的域名替换为您将使用的域:

    <webAppSecurity singleSignonEnabled=”true” ssoDomainNames=”.some.domain.com”/>

  5. 要仔细检查配置并生成一个 LDAP 键,可以启动服务器。导航到 <WorklightInstallDirectory>/server/wlp/bin,然后运行以下命令来启动服务器:
    • Linux:sudo ./server start worklightServer
    • Windows:server.bat start worklightServer
    检查日志文件,确保已使用您的配置成功启动服务器:
    • Linux:<WorklightInstallDirectory>/server/wlp/usr/servers/worklightServer/logs/console.log
    • Windows:<WorklightInstallDirectory>\WAS85liberty-server\server\wlp\usr\servers\worklightServer\logs\console.log
  6. 停止服务器:
    • Linux:sudo ./server stop worklightServer
    • Windows:server.bat stop worklightServer

设置 WebSphere Portal 服务器

  1. 要设置 WebSphere Portal 服务器的 LDAP,请根据您的 LDAP 值,使用清单 4 中所示的一些配置信息创建一个 ldapConfig.properties 文件。基于您服务器的配置,大部分属性的值都需要替换。对于 Liberty 配置文件服务器的 LDAP 的许多配置,这些值应与您使用的值匹配。
    清单 4. Portal LDAP 属性
    WasPassword=<WAS PW> 
    PortalAdminPwd=<Portal PW> 
    federated.ldap.id=myLDAP 
    federated.ldap.host=<host> 
    federated.ldap.ldapServerType=IDS 
    federated.ldap.port=389 
    federated.ldap.baseDN=dc=ibm,dc=com 
    federated.ldap.bindDN=cn=root 
    federated.ldap.bindPassword=<LDAP bind PW> 
    federated.ldap.et.personaccount.objectClasses=inetOrgPerson 
    federated.ldap.et.personaccount.objectClassesForCreate=inetOrgPerson 
    federated.ldap.et.personaccount.searchFilter= 
    federated.ldap.et.group.objectClasses=groupOfUniqueNames 
    federated.ldap.et.group.objectClassesForCreate=groupOfUniqueNames 
    federated.ldap.et.group.searchFilter= 
    federated.ldap.gm.dummyMember=uid=dummy 
    federated.ldap.gm.groupMemberName=uniqueMember 
    federated.ldap.gm.objectClass=groupOfUniqueNames 
    federated.ldap.gm.scope=nested 
    federated.ldap.loginProperties=uid;mail 
    personAccountParent=cn=users,dc=ibm,dc=com 
    groupParent=cn=groups,dc=ibm,dc=com 
    personAccountRdnProperties=uid 
    groupRdnProperties=cn 
    federated.ldap.attributes.mapping.ldapName=mail, title 
    federated.ldap.attributes.mapping.portalName=ibm-primaryEmail, ibm-jobTitle
  2. 在创建和配置此文件后,将它转移到 WebSphere Portal 机器,然后运行清单 5a 或 5b 中的 ConfigEngine 任务。
    清单 5a. ConfigEngine 任务,第 1 部分 (Linux)
    ./ConfigEngine.sh -DparentProperties=<file location> -DsaveParentproperties=true 
    ./ConfigEngine.sh validate-federated-ldap 
    ./ConfigEngine.sh wp-create-ldap 
    ./ConfigEngine.sh wp-set-entitytypes
    清单 5b. ConfigEngine 任务,第 1 部分 (Windows)
    ConfigEngine.bat -DparentProperties=<file location> -DsaveParentproperties=true 
    ConfigEngine.bat validate-federated-ldap 
    ConfigEngine.bat wp-create-ldap 
    ConfigEngine.bat wp-set-entitytypes
  3. 重新启动 Portal 服务器并继续执行清单 6a 或 6b 中的任务。
    清单 6a. ConfigEngine 任务,第 2 部分 (Linux)
    ./ConfigEngine.sh wp-validate-federated-ldap-attribute-config 
    ./ConfigEngine.sh wp-update-federated-ldap-attribute-config
    清单 6b. ConfigEngine 任务,第 2 部分 (Windows)
    ConfigEngine.bat wp-validate-federated-ldap-attribute-config 
    ConfigEngine.bat wp-update-federated-ldap-attribute-config
  4. 联合 LDAP 后,如果 LDAP 和门户中存在多个具有相同登录名的用户,那么您的用户登录名可能会变得模棱两可。要解决此问题,请使用一个 完全限定的用户名 来登录。在浏览器中打开 WebSphere Application Server 管理控制台,登录并导航到 Security > Global Security > Web and SIP security > Single sign-on (SSO)(图 1)。
    图 1. 身份验证机制和过期
    图 1. 身份验证机制和过期
  5. 确保域名与您用于 Liberty 配置文件的域名相同,如下图所示设置 LTPA cookie 名称,并打开 Interoperability 模式。完成上述操作之后,单击 OKSave the changes
    图 2. 单点登陆 (SSO) 属性
    图 2. 单点登陆 (SSO) 属性
  6. 将位于 Worklight 服务器上的 LTPA 密钥复制到您的本地机器,因为需要将它们导入 WebSphere Portal 中。Worklight 服务器上的 LTPA 密钥文件位于以下位置:
    • Linux:<WorklightInstallDirectory>/server/wlp/usr/servers/worklightServer/resources/security/ltpa.keys
    • Windows:<WorklightInstallDirectory>\WAS85liberty-server\server\wlp\usr\servers\worklightServer\resources\security\ltpa.keys
  7. 接下来,在 WebSphere Application Server 管理控制台内,导航回 Security > Global Security。在 Global Security 页面上,在 Web and SIP security 上方,LTPA 显示在 Authentication 部分的顶部(图 1)。在该页面上的表单底部,键入密码 WebAS,如果您导入该密钥,它将成为默认的 Liberty 配置文件密钥。如果使用您自己的密钥,请输入合适的密码。对于完全限定的密钥文件名称,键入 ltpa.keys 文件的路径和文件名(图 3)。完成之后,再次单击 Import keysSave the changes
    图 3. 全局安全性
    图 3. 全局安全性
  8. 现在重新启动 WebSphere Portal 服务器。

设置 Worklight 应用程序

现在您可通过为 Liberty 服务器和实际的客户端应用程序创建 WAR 文件,创建您的 Worklight 应用程序。

  1. 打开 Worklight 开发环境,使用项目名称 SSODemo 和应用程序名称 SSODemoApp创建一个混合应用程序。然后将一个新 Android 环境添加到此项目中。您的项目区域应类似于图 4。
    图 4. 项目文件夹
    图 4. 项目文件夹
  2. 要为您的 Liberty 服务器正确配置一个 WAR 文件,首先需要在 Design 视图中修改 application-description.xml 中的 worklightServerRootURL,使其指向 Worklight 服务器将在您的 Liberty 配置文件服务器上的位置,比如 http://host.domain.com:9080/SSODemo。请注意,该路径包含项目的名称,因为您要将 Worklight WAR 文件部署到此路径。
    图 5. 服务器根 URL
    图 5. 服务器根 URL
  3. 在 SSODemo/server/conf/worklight.properties 下,您需要取消注释并更改清单 7 中所示的值。
    清单 7. Worklight 服务器属性
    publicWorkLightHostname=host.domain.com
    publicWorkLightProtocol=http 
    publicWorkLightPort=9080 
    publicWorkLightContext=/SSODemo 
    
    wl.db.jndi.name=jdbc/WorklightDS 
    wl.db.type=DERBY 
    wl.db.url=jdbc:derby:${worklight.home}/derby/WorklightDB;create=true 
    wl.reports.db.url=jdbc:derby:${worklight.home}/derby/WorklightReportsDB;create=true
  4. 保存该文件,然后在 Source 视图中打开 SSODemo/server/conf/authenticationConfig.xml。在 <realms> 元素之前,添加 <securityTests> XML,如清单 8 所示。
    清单 8. 安全测试
    <securityTests>
        <mobileSecurityTest name="mobileTests"> 
            <testDeviceId provisioningType="none" /> 
            <testUser realm="WASLTPARealm" /> 
        </mobileSecurityTest> 
        <customSecurityTest name="WASLTPARealmTests"> 
            <test realm="WASLTPARealm" isInternalUserID="true"/> 
        </customSecurityTest> 
    </securityTests>
  5. 取消注释清单 9 中所示的标为 For websphere 的安全范围。
    清单 9. For WebSphere 安全范围
    <!-- For websphere --> 
    <realm name="WASLTPARealm" loginModule="WASLTPAModule">
       <className>com.worklight.core.auth.ext.WebSphereFormBasedAuthenticator
           </className> 
       <parameter name="login-page" value="/login.html"/> 
       <parameter name="error-page" value="/loginError.html"/> 
    </realm>
  6. 取消注释登录模块 For websphere(清单 10)。
    清单 10. For WebSphere 登录模块
    <!-- For websphere --> 
    <loginModule name="WASLTPAModule"> 
        <className>com.worklight.core.auth.ext.WebSphereLoginModule</className> 
    </loginModule>
  7. 返回到 Design 视图中的 SSODemo/apps/SSODemoApp/application-descriptor.xml 文件。在主要应用程序下,您希望在 Common(可选)节下添加安全测试 WASLTPARealmTests(图 6)。
    图 6. 主要应用程序的安全测试
    图 6. 主要应用程序的安全测试
  8. 在 Details 下的 Android phones and tablets 中,添加安全测试 mobileTests。
    图 7. Android 安全测试
    图 7. Android 安全测试
  9. 保存该文件,WAR 文件将自动生成到 bin 文件夹中。将创建的 WAR 文件复制到另一个位置,以便对其进行编辑。WAR 文件位于 <workspace>/bin/SSODemo.war。
  10. WAR 文件需要进行一些修改,然后才能全面启用对 Liberty 配置文件服务器的身份验证。您需要将一个简单的 login.html 和 loginError.html 放入 war 文件中。使用清单 11 和清单 12 中所示的内容创建这些文件。
    清单 11. login.html 文件内容
    <html> 
        <head> 
            <title>Login</title> 
        </head> 
        <body> 
            <form method="post" action="j_security_check"> 
                <label for="j_username">User name:</label> 
                <input type="text" id="j_username" name="j_username" /> 
                <br /> 
                <label for="j_password">Password:</label> 
                <input type="password" id="j_password" name="j_password" /> 
                <br /> 
                <input type="submit" id="login" name="login" value="Log In" /> 
            </form> 
        </body> 
    </html>
    清单 12. loginError.html 文件内容
    <html> 
        <head></head> 
        <body> 
            Login Error 
        </body> 
    </html>
  11. 使用归档文件管理器打开 SSODemo.war 文件,将这两个 HTML 文件都添加到 WAR 的顶级目录中(图 8)。
    图 8. 将 login.html 和 loginError.html 添加到 WAR 文件中
    图 8. 将 login.html 和 loginError.html 添加到 WAR 文件中
  12. 接下来,导航到 WAR 的 WEB-INF 文件夹,编辑 web.xml 文件(已在图 9 中突出显示),以便在右下角的 web-app 结束标记之前包含清单 13 中的 XML。
    图 9. web.xml 在 WAR 文件中的位置
    图 9. web.xml 在 WAR 文件中的位置
    清单 13. web.xml login-config XML
    <login-config> 
        <auth-method>FORM</auth-method> 
        <form-login-config> 
            <form-login-page>/login.html</form-login-page> 
            <form-error-page>/loginError.html</form-error-page> 
        </form-login-config> 
    </login-config>
  13. 将这个修改的 WAR 文件上传到您的 Liberty 配置文件服务器中的 <WorklightInstallDirectory>/server/wlp/usr/servers/worklightServer/apps 目录中。
  14. 再次修改 Worklight Server 的 Liberty 配置文件 server.xml,以包含这个新应用程序。可在以下位置找到该文件:
    • Linux:<WorklightInstallDirectory>/server/wlp/usr/servers/worklightServer/server.xml
    • Windows:<WorklightInstallDirectory>\WAS85liberty-server\server\wlp\usr\servers\worklightServer\server.xml
  15. 声明 applicationcenter 应用程序后,添加新应用程序标记,如清单 14 所示。
    清单 14. 将应用程序添加到 server.xml 中
    <application id="ssodemo" location="SSODemo.war" name="SSODemo" type="war"> 
        <classloader delegation="parentLast"> 
        <commonLibrary> 
             <fileset dir="${shared.resource.dir}/lib" 
    		includes="worklight-jee-library.jar"/> 
        </commonLibrary> 
        </classloader> 
    </application>
  16. Liberty 配置文件服务器现在应已全面配置,能够处理您将在下一节中开发的客户端代码。导航到 <WorklightInstallDirectory>/server/wlp/bin,然后运行此命令来启动服务器:
    • Linux:sudo ./server start worklightServer
    • Windows:server.bat start worklightServer
  17. 转到 Worklight 控制台:http://host.domain.com:9080/SSODemo/console/。

设置客户端应用程序

现在服务器 WAR 文件已创建,需要执行一些更改,然后才能在开发环境中正确编译 Worklight 应用程序。这是因为不是所有包都要编译,除非应用程序成功部署到内部 Jetty 服务器上,该服务器没有登录所需的 WebSphere 类,所以会失败。

  1. 返回到 worklight.properties 文件并重新注释掉清单 7 中修改的所有行,使它类似于清单 15。
    清单 15. Worklight 服务器属性
    #publicWorkLightHostname=host.domain.com
    #publicWorkLightProtocol=http 
    #publicWorkLightPort=9080 
    #publicWorkLightContext=/SSODemo 
    
    #wl.db.jndi.name=jdbc/WorklightDS 
    #wl.db.type=DERBY 
    #wl.db.url=jdbc:derby:${worklight.home}/derby/WorklightDB;create=true 
    #wl.reports.db.url=jdbc:derby:${worklight.home}/derby/WorklightReportsDB;
    	create=true
  2. 转到 authenticationConfig.xml 并重新注释掉之前取消注释的 for websphere 部分,如清单 16 和 17 所示。
    清单 16. For WebSphere 安全范围
    <!-- For websphere --> 
    <!--realm name="WASLTPARealm" loginModule="WASLTPAModule">
    <className>com.worklight.core.auth.ext.WebSphereFormBasedAuthenticator
    	</className> 
    <parameter name="login-page" value="/login.html"/> 
    <parameter name="error-page" value="/loginError.html"/> 
    </realm-->
    清单 17. For WebSphere 登录模块
    <!-- For websphere --> 
    <!--loginModule name="WASLTPAModule"> 
        <className>com.worklight.core.auth.ext.WebSphereLoginModule</className> 
    </loginModule-->
  3. 添加一个虚假的范围和登录模块,如清单 18 和 19 所示。
    清单 18. 添加 WASLTPA 虚假范围
    <realm loginModule="WASLTPAModule" name="WASLTPARealm">
        <className>com.worklight.core.auth.ext.FormBasedAuthenticator</className>
    </realm>
    清单 19. 添加 WASLTPA 虚假登录模块
    <loginModule name="WASLTPAModule">
    <className>com.worklight.core.auth.ext.NonValidatingLoginModule</className>
    </loginModule>

    更改使用的安全范围需要再次执行上面一节中创建 WAR 文件的步骤,完成之后,执行最后这些步骤来恢复 WebSphere 模块。
  4. 添加该应用程序需要的 HTML:SSODemo/apps/SSODemoApp/common/SSODemoApp.html。更改 HTML 的正文以包含清单 20 中的代码段。
    清单 20. SSODemoApp.html 正文中的 HTML
    <body id="content" style="display: none"> 
        <div id="AppBody">
            <div class="wrapper"> 
                <iframe id="portalframe" src="" style="border:'0px none'" width="100%”
                    height="640px"></iframe>
            </div>
        </div>
        <div id="AuthBody" style="display: none"> 
            <div id="loginForm"> 
                Username:<br/> 
                <input type="text" id="usernameInputField" autocorrect="off" 
                    autocapitalize="off" /><br /> 
                Password:<br/> 
                <input type="password" id="passwordInputField" autocorrect="off" 
                    autocapitalize="off"/><br/>		 
                <input type="button" id="loginButton" value="Login" /> 
                <input type="button" id="cancelButton" value="Cancel" /> 
            </div> 
        </div> 
        <script src="js/initOptions.js"></script> 
        <script src="js/SSODemoApp.js"></script> 
        <script src="js/messages.js"></script> 
        <script src="js/challengeResponse.js"></script> 
    </body>

    这向正文中添加了两节:一个内容区域和一个身份验证区域。目前,内容区域只是一个 IFrame,它在向 Worklight 执行身份验证后打开门户页面,表明 SSO 已在工作。

    此外,这里还添加了 js/challengeResponse.js 的脚本标记,这是一个需要创建的新文件,用于处理登录处理需求的客户端方面。此代码可以下载获得,主要基于在 Module 20.1 Form-based Authentication 中创建的质询处理函数,进行了一些修改,以便允许检查已存储登录名的加密缓存,从而适应自动身份验证。如果没有找到登录名,它会允许用户登录,并存储该信息供以后用于自动登录。

    当检测到一个安全质询并将它发送到这个 challengeResponse.js 文件中的 handleChallenge 函数时,会调用繁忙指示器来通知用户正在进行处理该质询,加密的缓存可用于检查凭据。加密的缓存完全通过匿名调用回调处理函数来运行。这意味着每次检查都需要在这些回调中执行。如果用户名和密码都拥有在加密缓存中设置的值,那么它会为此信息创建一个提交表单供用户用于登录。如果未找到登录名,那么它会显示身份验证正文,以便用户可以手动键入信息并登录,在用户单击 “提交” 后会存储凭据供未来使用。

    当登录完成时,可能会显示应用程序正文,其中 IFrames 来源更改为加载您的门户。成功登录后会加载门户;否则也会加载它,但没有用于 SSO 的适当的 LTPA 令牌,因为在页面加载时未完成身份验证,并且这些身份验证质询是通过 XHR 完成的,所以无需完整的加载页面。

  5. 完成 challengeResponse.js 文件的添加之后,右键单击 Android 环境并选择 Run As > Build All and Deploy,创建一个要部署在 Worklight 服务器上的新 wlapp 文件。打开您服务器的 Worklight 控制台 http://worklight.domain.com:9080/SSODemo/console/,然后选择顶部的文件,您可在这里选择 Deploy application or adapter,导航到您的 Worklight SSODemo 工作区。在 bin 文件夹中,会有一个 SSODemoApp-all.wlapp 文件。选择此文件,然后提交它。应用程序现在应已部署并类似于图 11。
    图 11. 部署的 SSODemo 应用程序
    图 11. 部署的 SSODemo 应用程序
  6. 返回到您的开发环境,找到 Android 环境添加的项目 SSODemoSSODemoAppAndroid。右键单击并选择 Run As > Android Application
  7. 模拟器或物理设备加载应用程序后,将会显示登录面板。使用来自 LDAP 的一个用户登录。就像是同一个 LDAP 用户一样在登录您门户的首页一样。当应用程序被关闭并再次打开时,应该会看到该用户已经自动登录。

结束语

本文介绍了如何创建一个混合 IBM Worklight 应用程序,它能够在启动时自动登录一位用户,并通过单点登陆使得该用户无需再次登录即可访问您的 WebSphere Portal 服务器。这提供了许多移动用户所习惯的便捷性,他们的帐户可在打开应用程序时轻松访问和使用。

扩展此练习的可能方式包括为用户添加删除其凭据的能力,以便他们能够使用不同的登录名。为此,可在用户请求加密缓存时从中删除这些值,重新加载页面,然后触发一次新登录。另一个方式可能是:检测用户的登录名是否由于在登录失败时返回错误消息而不再有效,然后删除缓存值,使用户可以再次使用新值登录。


下载

描述名字大小
应用程序的样例Part3-SSODemo.zip46 KB

参考资料

学习

获得产品和技术

讨论

条评论

developerWorks: 登录

标有星(*)号的字段是必填字段。


需要一个 IBM ID?
忘记 IBM ID?


忘记密码?
更改您的密码

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件

 


在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。

所有提交的信息确保安全。

选择您的昵称



当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

标有星(*)号的字段是必填字段。

(昵称长度在 3 至 31 个字符之间)

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

 


所有提交的信息确保安全。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=移动开发, WebSphere, Lotus
ArticleID=931471
ArticleTitle=使用 WebSphere Portal 和 IBM Worklight 交付出色的移动 Web 体验,第 3 部分: 使用 Worklight and WebSphere Portal 实现自动单点登录
publish-date=05272013