转载

使用 Bluemix Single Sign On 通过社交媒体凭据保护应用程序

您是否在开发 Web 应用程序,需要以最先进的方式保护它们?您是否受够了创建自己的用户管理和登录页面?您是否也感觉您的实现中可能存在潜在的安全问题?在本文中,您将学习如何使用 IBM Bluemix 中的 IBM Single Sign On 服务保护 Web 应用程序。

运行应用程序

在 JazzHub 上获取代码

使用 IBM Bluemix 中的 IBM Single Sign On 服务,可向任何 Web 或移动应用程序验证用户。

构建您的应用程序需要做的准备工作

  • 一个 Bluemix 帐户
  • Eclipse
  • cloud foundry 命令行工具

第 1 步. 设置 Bluemix Single Sign On 服务

必须在 Bluemix 中创建和配置 IBM Single Sign On 服务。这是一个一次性任务。完成此设置后,无需进一步配置即可在 Bluemix 中保护任何应用程序。

  1. 登录到 Bluemix。
  2. 单击 Catalog
  3. 选择 Single Sign On使用 Bluemix Single Sign On 通过社交媒体凭据保护应用程序
  4. 在 App 下拉列表中选择 Leave unbound 并单击 Create使用 Bluemix Single Sign On 通过社交媒体凭据保护应用程序
  5. 该服务已被创建,您将被跳转到 Service Management 页面。输入 myTestSSOService 作为名称并单击 Continue使用 Bluemix Single Sign On 通过社交媒体凭据保护应用程序
  6. 单击 Facebook 作为新身份来源。 使用 Bluemix Single Sign On 通过社交媒体凭据保护应用程序
  7. 将第 1 步下显示的 OAuth Redirect URI 复制到剪贴板。 使用 Bluemix Single Sign On 通过社交媒体凭据保护应用程序
  8. 在一个单独的浏览器窗口中打开 https://developers.facebook.com/ 页面。
  9. 登录到 Facebook。
  10. 单击 Manage Apps > My Apps
  11. 单击 Add a New App
  12. 单击 Website
  13. 选择一个名称(例如 Bluemix)。单击 Create New Facebook App ID
  14. 如果被询问这是否是另一个应用程序的测试版本,请选择 NO 。选择 Apps for pages ,然后单击 Create App ID
  15. 将上面获取的 Redirect URI 粘贴到 Site URL 和 Mobile Site URL 字段中。(此操作不是必要操作,但您必须在这里提供一个 URL。)
  16. 选择 My Apps > Bluemix > Settings > Advanced
  17. 将上面获取的 Redirect URL 粘贴到 Valid OAuth redirect URIs 文本字段中。
  18. 选择 My Apps > Bluemix > Settings > Dashboard
  19. 将 App ID 和 App Secret(单击 Show )复制到剪贴板。
  20. 返回到 Bluemix 浏览器窗口,将凭据粘贴到相应位置中。 使用 Bluemix Single Sign On 通过社交媒体凭据保护应用程序
  21. 单击 Save
  22. 单击 Verify
  23. 选择 Click here 链接并登录到 Facebook。
  24. 单击 Done

恭喜您!现在您可以使用 Single Sign On 服务保护在 IBM Bluemix 中运行的任何应用程序了。在本例中,仅启用了 Facebook,您还可以添加 LinkedIn 和 Google 作为身份提供商。也可以直接在 Bluemix 中的 Single Sign On 服务中维护一个自定义用户数据库。最后,可以将 Single Sign On 服务连接到世界任何地方的任何符合 SAML 的身份提供商,甚至可以在您自己的数据中心内执行此操作。

第 2 步. 准备好使用 Bluemix 执行 JEE 开发的 Eclipse 环境

您的 Eclipse 环境需要一个插件,使其能够直接与 IBM Bluemix 进行通信。该插件还提供了用于 JEE 开发的库。

在您的 Eclipse 环境中,执行以下操作:

  1. 选择 Help > Eclipse Marketplace > Find
  2. Bluemix 输入搜索文本字段中,按下 Enter
  3. 单击 Install使用 Bluemix Single Sign On 通过社交媒体凭据保护应用程序

步骤 3. 为 Liberty 创建一个 JEE Web 应用程序

现在,您可以为 Liberty 构建一个示例 JEE Web 应用程序了。创建一个简单 servlet,用于向浏览器返回字符串 TopSecret 。在第 4 步中,我展示了如何保护这个 servlet,以便只有经过验证的用户才能访问它。

按照以下步骤创建 JEE Web 应用程序:

  1. 启动 Eclipse。
  2. 单击 File > New > Dynamic Web Project
  3. 单击 Next >使用 Bluemix Single Sign On 通过社交媒体凭据保护应用程序
  4. 输入 SSOTest 作为项目名称,单击 Finish使用 Bluemix Single Sign On 通过社交媒体凭据保护应用程序
  5. 右键单击 Project Explorer 中的 SSOTest 项目,单击 New > Servlet
  6. 输入 HelloWorldTest 作为类名,单击 Finish使用 Bluemix Single Sign On 通过社交媒体凭据保护应用程序
  7. 现在 Java™ 源代码编辑器会自动打开。调整 doGet 方法,在收到 GET 请求时将字符串 TopSecret 返回给浏览器。 使用 Bluemix Single Sign On 通过社交媒体凭据保护应用程序

    点击查看大图

    关闭 [x]

    使用 Bluemix Single Sign On 通过社交媒体凭据保护应用程序

  8. 按下 Ctrl-S 保存文件。
  9. 再次右键单击 SSOTest 项目。依次选择 Properties > Java Build Path > Add Library > Server Runtime > Next > IBM Bluemix Runtime > Finish > OK (您的项目现在已完成编译)。

第 4 步. 向 Web 应用程序添加对 Single Sign On 服务的支持

您的应用程序现在已做好准备,可推送到 IBM Bluemix 了。只剩下创建 server.xml 和 web.xml 文件来添加对 Single Sign On 服务的支持了。正常情况下,只会推送 WAR 文件,但在这里,您还需要创建一个包含 server.xml 文件的特殊 ZIP 文件,以便将 Liberty 配置文件中运行的 Web 应用程序连接到 Bluemix 中的 Single Sign On 服务。

  1. 在 SSOTest 项目的 Webcontent/WEB-INF 文件夹中创建下面这个 web.xml 文件。

点击查看代码清单

关闭 [x]

<?xml version="1.0" encoding="ISO-8859-1" ?> <web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"  version="2.4">  <display-name>HelloWorld Application</display-name>  <description>  This is a simple web application with a source code organization  based on the recommendations of the Application Developer's Guide.     </description>  <servlet>   <servlet-name>HelloServlet</servlet-name>   <servlet-class>HelloWorldTest</servlet-class>  </servlet>  <servlet-mapping>   <servlet-name>HelloServlet</servlet-name>   <url-pattern>/hello/*</url-pattern>  </servlet-mapping>  <security-constraint>   <display-name>   </display-name>   <web-resource-collection>    <web-resource-name>HelloServlet</web-resource-name>    <url-pattern>/</url-pattern>    <url-pattern>/*</url-pattern>    <url-pattern>/</url-pattern>    <http-method>GET</http-method>    <http-method>PUT</http-method>    <http-method>HEAD</http-method>    <http-method>TRACE</http-method>    <http-method>POST</http-method>    <http-method>DELETE</http-method>    <http-method>OPTIONS</http-method>   </web-resource-collection>   <auth-constraint>    <role-name>TESTROLE</role-name>   </auth-constraint>  </security-constraint> </web-app> 
  1. 在您的桌面上创建一个名为 deploy2bluemix 的文件夹。
  2. 在该文件夹中,创建一个包含以下内容的 server.xml 文件。
    <server description="new server">   <featureManager>    <feature>jsp-2.2</feature>    <feature>localConnector-1.0</feature>   </featureManager>   <httpEndpoint httpPort="9080" httpsPort="9443" id="defaultHttpEndpoint"/>   <applicationMonitor updateTrigger="mbean"/>   <application type="war" id="SSOTest" name="SSOTest"       location="SSOTest.war">    <application-bnd>     <security-role name="TESTROLE">      <special-subject type="ALL_AUTHENTICATED_USERS"/>     </security-role>    </application-bnd>   </application>  </server> 
  3. 在 deploy2bluemix 文件夹中创建一个名为 apps 的文件夹。
  4. 返回到 Eclipse
  5. 右键单击 SSOTest 项目并选择 Export > WAR File
  6. 在您桌面上选择 deploy2bluemix 文件夹中的 app 目录,单击 Finish使用 Bluemix Single Sign On 通过社交媒体凭据保护应用程序

第 5 步. 将应用程序推送到云并将它绑定到 Single Sign On 服务

现在您的应用程序包已准备好了。您已经使用预先构建的包从头创建了它。因此,您已经获得了所有必要步骤的完整概述。最后一步是将您的应用程序推送到 IBM Bluemix,并将它绑定到 Single Sign On 服务。

  1. 使用命令行窗口转到 deploy2bluemix 目录。
  2. 使用 Cloudfoundry 命令行工具登录到 Bluemix:
    cf login -a https://api.ng.bluemix.net
  3. 键入 cf push <yourNameGoesHere> ,其中 <yourNameGoesHere> 可替换为用于您的应用程序的 URL。(例如,如果将 <yourNameGoesHere> 设置为 ssotest ,那么可以在 http://ssotest.mybluemix.net 下找到您的应用程序。)
  4. 键入 cf services 来找到您的 Single Sign On 服务的名称。例如:

    点击查看代码清单

    关闭 [x]

    cf services  Getting services in org romeo.kienzler@ch.ibm.com / space developerWorks as romeo.kienzler@ch.ibm.com...  OK   name                service        plan       bound apps    Single Sign On-ab   SingleSignOn   standard   ibmssoliberty
  5. 要绑定该服务,可键入以下命令:
    cf bind-service <yourNameGoesHere> <service_name>
    在我的示例中,服务的名称为 Single Sign On-ab。使用下面这个命令,我将此服务绑定到我的应用程序:
    cf bind-service ibmssoliberty "Single Sign On-ab"
  6. 最后,需要重新启动您的应用程序,自动将 SAML 扩展安装到您的 Liberty 配置文件中:
    cf restage <yourNameGoesHere>
    示例:
    cf restage ibmssoliberty

现在您已准备好;万事俱备。像以下这样调用您的应用程序时: http://ibmssoliberty.mybluemix.net/SSOTest/hello ,您会看到以下授权页面:

使用 Bluemix Single Sign On 通过社交媒体凭据保护应用程序

这个授权页面是 IBM Single Sign On 服务生成的,可在此服务的管理用户界面中修改它,使之符合您的风格。在验证 Facebook 凭据后,您将会看到 servlet 的输出:

使用 Bluemix Single Sign On 通过社交媒体凭据保护应用程序

结束语

在本教程中,您学习了如何快速将 Single Sign On 服务添加到 Web 应用程序中,而无需对您的源代码执行任何更改。从现在起,您可以使用此服务保护 Bluemix 中的任何应用程序。

BLUEMIX SERVICE USED IN THIS TUTORIAL: Single Sign On 服务 可以帮助您保护为云开发的 Web 和移动应用程序,并轻松地构建和增强应用程序,以包含基于策略的用户访问安全。

正文到此结束
Loading...