转载

使用 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...