![[17.0.0.2 and later]](../ng_v17002plus.gif)
在 Liberty 中配置社交登录
可以配置 Liberty 服务器,以便用户可以通过使用他们的社交媒体帐户进行登录来向 Liberty 服务器上托管的 Web 站点进行认证。从预定义的社交媒体平台配置中进行选择,或者为基于 OAuth 2.0 或 OpenID Connect 1.0 标准的任何社交媒体平台定义您自己的配置。
关于此任务
社交登录是一种单点登录 (SSO),它使用户能够使用他们现有的社交媒体帐户登录到 Web 站点,而不用特地为该 Web 站点创建帐户。例如,您可以配置社交登录,以便用户可以使用他们的 Facebook 或 Twitter 帐户登录到 Web 站点。可以对任何使用 OAuth 2.0 或 OpenID Connect 1.0 标准进行授权的社交媒体平台启用社交登录。
过程
- 为 Facebook 配置社交登录。
- 创建 Facebook 应用程序。 有关更多信息,请参阅 Facebook App Development。
当您配置应用程序时,通过提供以下格式的重定向 URL 向该应用程序注册 Liberty 服务器:
https://liberty_host:SSL_port/ibm/api/social-login/redirect/facebookLogin
创建应用程序之后,请记下应用程序标识和应用程序私钥,您会将它们添加至 Liberty 配置。
- 打开 Liberty 服务器的 server.xml 配置文件,并添加 socialLogin-1.0 和
appSecurity-2.0 功能部件。
<featureManager> <feature>socialLogin-1.0</feature> <feature>appSecurity-2.0</feature> ... </featureManager>
- 添加 facebookLogin 元素,并为其配置应用程序标识和应用程序私钥。
<facebookLogin clientId="facebook_app_id" clientSecret="facebook_app_secret" />
facebookLogin 元素指定与 Facebook 的连接的某些缺省值。可以通过配置 Facebook 登录中所列示的更多属性来覆盖缺省值和指定其他设置。
- 在 keyStore 元素上配置信任库,并将证书从 Facebook 端点导入到该信任库。
例如,以下配置指向缺省 Liberty 信任库文件。
要将证书导入到 Liberty 信任库,请在浏览器中转至 facebookLogin 元素所指定的某个端点,然后导出证书。可以使用密钥管理工具(例如 iKeyman)或 Java keytool 实用程序将证书添加到 Liberty 信任库文件。<keyStore id="defaultKeyStore" password="keyspass" />
提示: 在某些情况下,您可能必须导入多个证书。有关您需要导入哪些证书的详细信息,请参阅 messages.log 文件。
- 创建 Facebook 应用程序。 有关更多信息,请参阅 Facebook App Development。
- 为 GitHub 配置社交登录。
- 创建 GitHub OAuth 应用程序。 有关更多信息,请参阅 GitHub: OAuth API 中有关 Web 应用程序的信息。
当您配置应用程序时,通过提供以下格式的重定向 URL 向该应用程序注册 Liberty 服务器:
https://liberty_host:SSL_port/ibm/api/social-login/redirect/githubLogin
创建应用程序之后,请记下客户机标识和客户机私钥,您之后会将它们添加至 Liberty 配置。
- 打开 Liberty 服务器的 server.xml 配置文件,并添加 socialLogin-1.0 和
appSecurity-2.0 功能部件。
<featureManager> <feature>socialLogin-1.0</feature> <feature>appSecurity-2.0</feature> ... </featureManager>
- 添加 githubLogin 元素,并为其配置客户机标识和客户机私钥。
<githubLogin clientId="github_client_id" clientSecret="github_client_secret" />
githubLogin 元素指定与 GitHub 的连接的某些缺省值。可以通过配置 GitHub 登录中所列示的更多属性来覆盖缺省值和指定其他设置。
- 在 keyStore 元素上配置信任库,并将证书从 GitHub 端点导入到该信任库。
例如,以下配置指向缺省 Liberty 信任库文件。
要将证书导入到 Liberty 信任库,请在浏览器中转至 githubLogin 元素所指定的某个端点,然后导出证书。可以使用密钥管理工具(例如 iKeyman)或 Java keytool 实用程序将证书添加到 Liberty 信任库文件。<keyStore id="defaultKeyStore" password="keyspass" />
提示: 在某些情况下,您可能必须导入多个证书。有关您需要导入哪些证书的详细信息,请参阅 messages.log 文件。
- 创建 GitHub OAuth 应用程序。 有关更多信息,请参阅 GitHub: OAuth API 中有关 Web 应用程序的信息。
- 为 Google 配置社交登录。
- 在“Google API 控制台”项目中创建 OAuth 客户机标识。 有关的更多信息,请参阅 Creating a Google API Console project and client ID。
当您配置应用程序时,通过提供以下格式的重定向 URL 向该应用程序注册 Liberty 服务器:
https://liberty_host:SSL_port/ibm/api/social-login/redirect/googleLogin
创建客户机标识之后,请记下客户机标识和客户机私钥,您会将它们添加至 Liberty 配置。
- 打开 Liberty 服务器的 server.xml 配置文件,并添加 socialLogin-1.0 和
appSecurity-2.0 功能部件。
<featureManager> <feature>socialLogin-1.0</feature> <feature>appSecurity-2.0</feature> ... </featureManager>
- 添加 googleLogin 元素,并为其配置客户机标识和客户机私钥。
<googleLogin clientId="google_client_id" clientSecret="google_client_secret" />
googleLogin 元素指定与 Google 的连接的某些缺省值。可以通过配置 Google 登录中所列示的更多属性来覆盖缺省值和指定其他设置。
- 在 keyStore 元素上配置信任库,并将证书从 Google 端点导入到该信任库。
例如,以下配置指向缺省 Liberty 信任库文件。
要将证书导入到 Liberty 信任库,请在浏览器中转至 googleLogin 元素所指定的某个端点,然后导出证书。可以使用密钥管理工具(例如 iKeyman)或 Java keytool 实用程序将证书添加到 Liberty 信任库文件。<keyStore id="defaultKeyStore" password="keyspass" />
提示: 在某些情况下,您可能必须导入多个证书。有关您需要导入哪些证书的详细信息,请参阅 messages.log 文件。
- 在“Google API 控制台”项目中创建 OAuth 客户机标识。 有关的更多信息,请参阅 Creating a Google API Console project and client ID。
- 为 LinkedIn 配置社交登录。
- 创建 LinkedIn 应用程序。 有关更多信息,请参阅 LinkedIn: Authenticating with OAuth 2.0。
当您配置应用程序时,通过提供以下格式的重定向 URL 向该应用程序注册 Liberty 服务器:
https://liberty_host:SSL_port/ibm/api/social-login/redirect/linkedinLogin
创建应用程序之后,请记下客户机标识和客户机私钥,您之后会将它们添加至 Liberty 配置。
- 打开 Liberty 服务器的 server.xml 配置文件,并添加 socialLogin-1.0 和
appSecurity-2.0 功能部件。
<featureManager> <feature>socialLogin-1.0</feature> <feature>appSecurity-2.0</feature> ... </featureManager>
- 添加 linkedinLogin 元素,并为其配置客户机标识和客户机私钥。
<linkedinLogin clientId="linkedin_client_id" clientSecret="linkedin_client_secret" />
linkedinLogin 元素指定与 LinkedIn 的连接的某些缺省值。可以通过配置 LinkedIn 登录中所列示的更多属性来覆盖缺省值和指定其他设置。
- 在 keyStore 元素上配置信任库,并将证书从 LinkedIn 端点导入到该信任库。
例如,以下配置指向缺省 Liberty 信任库文件。
要将证书导入到 Liberty 信任库,请在浏览器中转至 linkedinLogin 元素所指定的某个端点,然后导出证书。可以使用密钥管理工具(例如 iKeyman)或 Java keytool 实用程序将证书添加到 Liberty 信任库文件。<keyStore id="defaultKeyStore" password="keyspass" />
提示: 在某些情况下,您可能必须导入多个证书。有关您需要导入哪些证书的详细信息,请参阅 messages.log 文件。
- 创建 LinkedIn 应用程序。 有关更多信息,请参阅 LinkedIn: Authenticating with OAuth 2.0。
- 为 Twitter 配置社交登录。
- 创建 Twitter 应用程序。 有关更多信息,请参阅 Twitter Apps。
创建该应用程序之后,启用从用户请求电子邮件地址许可权。请务必记下使用者密钥和使用者私钥,您会将它们添加至 Liberty 配置。
(可选)可以启用回调锁定,以确保应用程序无法覆盖回调 URL。在设置下,按以下格式输入回调 URL,并选中启用回调锁定设置。https://liberty_host:SSL_port/ibm/api/social-login/redirect/twitterLogin
- 打开 Liberty 服务器的 server.xml 配置文件,并添加 socialLogin-1.0 和
appSecurity-2.0 功能部件。
<featureManager> <feature>socialLogin-1.0</feature> <feature>appSecurity-2.0</feature> ... </featureManager>
- 添加 twitterLogin 元素,并为其配置客户机标识和客户机私钥。
<twitterLogin consumerKey="twitter_consumer_key" consumerSecret="twitter_consumer_secret" />
twitterLogin 元素指定与 Twitter 的连接的某些缺省值。可以通过配置 Twitter 登录中所列示的更多属性来覆盖缺省值和指定其他设置。
- 在 keyStore 元素上配置信任库,并将证书从 Twitter 端点导入到该信任库。
例如,以下配置指向缺省 Liberty 信任库文件。
要将证书导入到 Liberty 信任库,请在浏览器中转至 twitterLogin 元素所指定的某个端点,然后导出证书。可以使用密钥管理工具(例如 iKeyman)或 Java keytool 实用程序将证书添加到 Liberty 信任库文件。<keyStore id="defaultKeyStore" password="keyspass" />
提示: 在某些情况下,您可能必须导入多个证书。有关您需要导入哪些证书的详细信息,请参阅 messages.log 文件。
- 创建 Twitter 应用程序。 有关更多信息,请参阅 Twitter Apps。
- 为支持 OAuth 2.0 的社交媒体平台(例如,Instagram 或 Pinterest)配置社交登录。
- 为社交媒体平台创建应用程序。 有关更多信息,请参阅特定社交媒体平台的文档。
创建应用程序之后,请记下客户机标识和客户机私钥,您之后会将它们添加至 Liberty 配置。
- 打开 Liberty 服务器的 server.xml 配置文件,并添加 socialLogin-1.0 和
appSecurity-2.0 功能部件。
<featureManager> <feature>socialLogin-1.0</feature> <feature>appSecurity-2.0</feature> ... </featureManager>
- 添加 oauth2Login 元素,并配置与该社交媒体平台的连接。 有关可配置属性的信息,请参阅 OAuth 2.0 登录。例如,以下配置将定义 Instagram 应用程序的社交登录:
<oauth2Login id="instagramLogin" clientId="client_id" clientSecret="client_secret" scope="basic public_content" responseType="code" tokenEndpointAuthMethod="client_secret_post" authorizationEndpoint="https://api.instagram.com/oauth/authorize" tokenEndpoint="https://api.instagram.com/oauth/access_token" userApi="https://api.instagram.com/v1/users/self" userNameAttribute="username" website="https://www.instagram.com/developer/authentication/"> </oauth2Login>
配置提示:- Liberty 服务器将您对 scope 属性定义的 OAuth 作用域值传递至社交媒体平台。所定义的作用域必须受到该社交媒体平台的支持,并且该作用域必须为 Liberty 服务器授予足够的访问权,以从社交媒体平台读取用户数据。此外,如果您希望社交媒体应用程序调用其他社交媒体 API(例如,市场营销 API),那么所定义的值必须包括这些 API 所需要的作用域。
- 在 authorizationEndpoint 和 tokenEndpoint 属性中定义社交媒体平台的端点。Liberty 服务器首先将用户重定向到授权端点,以认证该用户以及获得 OAuth 授权代码。然后,它将调用令牌端点,以交换 OAuth 令牌的 OAuth 授权代码。
- 在 keyStore 元素上配置信任库,并将证书从社交媒体端点导入到该信任库。
例如,以下配置指向缺省 Liberty 信任库文件。
要将证书导入到 Liberty 信任库,请在浏览器中转至 oauth2Login 元素所指定的某个端点,然后导出证书。可以使用密钥管理工具(例如 iKeyman)或 Java keytool 实用程序将证书添加到 Liberty 信任库文件。<keyStore id="defaultKeyStore" password="keyspass" />
提示: 对于某些社交媒体平台,您可能必须导入多个证书。有关您需要导入哪些证书的详细信息,请参阅 messages.log 文件。 - 返回到社交媒体应用程序,按以下格式配置重定向或回调 URL(指向所配置 oauth2Login 元素的标识)。
例如,对于 Instagram,oauth2Login 配置示例的重定向 URL 具有以下格式:https://liberty_host:SSL_port/ibm/api/social-login/redirect/oauth2login_id
https://liberty_host:SSL_port/ibm/api/social-login/redirect/instagramLogin
- 为社交媒体平台创建应用程序。 有关更多信息,请参阅特定社交媒体平台的文档。
- 为支持 OpenID Connect 1.0 的社交媒体平台配置社交登录。
- 为社交媒体平台创建应用程序。 有关更多信息,请参阅特定社交媒体平台的文档。
创建应用程序之后,请记下客户机标识和客户机私钥,您之后会将它们添加至 Liberty 配置。
- 打开 Liberty 服务器的 server.xml 配置文件,并添加 socialLogin-1.0 和
appSecurity-2.0 功能部件。
<featureManager> <feature>socialLogin-1.0</feature> <feature>appSecurity-2.0</feature> ... </featureManager>
- 添加 oidcLogin 元素,并配置与该社交媒体平台的连接。 有关可配置属性的信息,请参阅 OpenID Connect 1.0 登录。例如,以下配置将为使用 OpenID Connect 的 Google 应用程序配置社交登录:
<oidcLogin id="googleOIDCLogin" clientId="client_id" clientSecret="client_secret" authorizationEndpoint="https://accounts.google.com/o/oauth2/v2/auth" tokenEndpoint="https://www.googleapis.com/oauth2/v4/token" jwksUri="https://www.googleapis.com/oauth2/v3/certs" scope="openid profile email" userNameAttribute="email" isClientSideRedirectSupported="true" issuer="https://accounts.google.com" realmNameAttribute="iss" > </oidcLogin>
配置提示:- Liberty 服务器将您对 scope 属性定义的 OAuth 作用域值传递至社交媒体平台。所定义的作用域必须受到该社交媒体平台的支持,并且该作用域必须为 Liberty 服务器授予足够的访问权,以从社交媒体平台读取用户数据。此外,如果您希望社交媒体应用程序调用其他社交媒体 API(例如,市场营销 API),那么所定义的值必须包括这些 API 所需要的作用域。
- 在 authorizationEndpoint 和 tokenEndpoint 属性中定义社交媒体平台的端点。Liberty 服务器首先将用户重定向到授权端点,以认证该用户以及获得 OAuth 授权代码。然后,它将调用令牌端点,以交换 OAuth 令牌的 OAuth 授权代码。
- 在 keyStore 元素上配置信任库,并将证书从社交媒体端点导入到该信任库。
例如,以下配置指向缺省 Liberty 信任库文件。
要将证书导入到 Liberty 信任库,请在浏览器中转至 oidcLogin 元素所指定的某个端点,然后导出证书。可以使用密钥管理工具(例如 iKeyman)或 Java keytool 实用程序将证书添加到 Liberty 信任库文件。<keyStore id="defaultKeyStore" password="keyspass" />
提示: 对于某些社交媒体平台,您可能必须导入多个证书。有关您需要导入哪些证书的详细信息,请参阅 messages.log 文件。 - 返回到社交媒体应用程序,按以下格式配置重定向或回调 URL(指向所配置 oidcLogin 元素的标识)。
例如,oidcLogin 配置示例的重定向 URL 具有以下格式:https://liberty_host:SSL_port/ibm/api/social-login/redirect/oidclogin_id
https://liberty_host:SSL_port/ibm/api/social-login/redirect/googleOIDCLogin
- 为社交媒体平台创建应用程序。 有关更多信息,请参阅特定社交媒体平台的文档。
子主题
Liberty 的社交媒体选择表单
如果已配置多个社交媒体提供者来保护请求,那么 WebSphere® Application Server Liberty 会提供缺省的社交媒体选择表单。此表单允许您在 Liberty 服务器中配置的可用提供者之间进行选择,以针对受保护的资源请求认证您自己。为 Liberty 配置定制社交媒体选择表单
您可以配置自己的社交媒体选择表单,而不是配置 Liberty 提供的缺省社交媒体选择表单。如果已配置多个社交媒体提供者来保护请求,那么可以选择此选项。

文件名:twlp_sec_sociallogin.html