带有移动客户端的 Saml SSO

EK_*_*Day 5 mobile saml shibboleth single-sign-on saml-2.0

我对 SAML 及其通过 Shibboleth 的实施有很多疑问。我已经做了相当多的研究,我想澄清一些事情。我有一个与我们的服务器通信的移动应用程序。我们的一个企业客户(我们称之为 StackOverflow University)希望使用 Shibboleth(或者我应该说 SAML?)向我们的系统提供 SSO。他们已经向我们发送了所有学生的电子邮件地址和基本个人资料信息。使用 OAuth2,我们确切地知道如何提供 SSO,但是,使用 SAML,我们无法专注于 IDP、SP、AuthnRequest、元数据等。

我们的假设。

  • IDP = StackOverflow 大学
  • SP = 我们的应用程序

我们的客户要求我们提供以下信息

请让我知道下一步。我至少需要以下信息来配置我们这边: - 您的服务提供商实体 ID - 您的服务提供商元数据(如果您不是 InCommon 的成员) - 我们应在 SAML 断言中向您发送的属性列表

我们不是 InCommon 的成员。

方法 学生下载我们的移动应用程序。他们选择自己的机构(StackOverflow 大学)。调用我们的服务器来检索 SSO 配置,其中包含 SAML 所需的信息。

  1. 移动客户端打开网络视图并导航到特定网址。该网址将创建一个登录屏幕。我们如何配置请求以使用下面这些 url 之一和 AuthnRequest?

<ArtifactResolutionService Binding="urn:oasis:names:tc:SAML:1.0:bindings:SOAP-binding" Location="https://webauth.xxx.edu:8443/idp/profile/SAML1/SOAP/ArtifactResolution" index="1"/>
<ArtifactResolutionService Binding="urn:oasis:names:tc:SAML:2.0:bindings:SOAP" Location="https://webauth.xxx.edu:8443/idp/profile/SAML2/SOAP/ArtifactResolution" index="2"/>
<SingleSignOnService Binding="urn:mace:shibboleth:1.0:profiles:AuthnRequest" Location="https://webauth.xxx.edu/idp/profile/Shibboleth/SSO"/>
<SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://webauth.xxx.edu/idp/profile/SAML2/POST/SSO"/>
<SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect" Location="https://webauth.xxx.edu/idp/profile/SAML2/Redirect/SSO"/>
<SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST-SimpleSign" Location="https://webauth.xxx.edu/idp/profile/SAML2/POST-SimpleSign/SSO"/>
Run Code Online (Sandbox Code Playgroud)

  1. 用户输入他们的凭据
  2. 事情的发生让我无法理解。
  3. 我们的服务器如何接收声明、创建令牌以及客户端如何使用它与我们的系统进行通信。

鉴于我们知识的空白,有人可以帮助解释这个过程吗?

nzp*_*mad 2

客户端,您需要一个SAML 堆栈

这将为您实施所有管道。大多数产生元数据。您将此发送给您的 IDP。这有他们要求的实体ID等。

在客户端,您将登录屏幕连接到堆栈。

您可以使用 IDP 元数据地址配置堆栈以获取其元数据。

用户单击登录,堆栈发送 AuthnRequest,IDP 显示登录屏幕,用户进行身份验证,您会收到一个 SAML 令牌,其中包含 IDP 配置为返回的断言(声明)。