我对SAML及其通过Shibboleth的实施有很多疑问。我做了大量的研究,我想澄清一些事情。我有一个与我们的服务器通信的移动应用程序。我们的企业客户,我们称之为StackOverflow大学,想使用Shibboleth为我们的系统提供SSO(或者我应该说SAML?)。他们已经向我们发送了所有学生的电子邮件地址和基本资料信息。使用OAuth2,我们确切地知道如何提供SSO,但是,使用SAML,我们无法围绕IDP,SP,AuthnRequest,元数据等进行包装。
我们的假设。
我们的客户已向我们索取以下信息
请让我知道下一步。我至少需要以下信息来配置我们的方面: - 您的服务提供商实体ID - 您的服务提供商元数据(如果您不是InCommon的成员) - 我们应该在SAML断言中发送给您的属性列表
我们不是InCommon的成员。
方法 学生下载我们的移动应用程序。他们选择他们的机构(StackOverflow大学)。调用我们的服务器以检索具有SAML必要信息的SSO配置。
<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"/>
&#13;
鉴于我们的知识存在差距,有人可以帮助解释这个过程吗?
答案 0 :(得分:1)
客户端,您需要SAML stack。
这将为您实现所有管道。大多数产生元数据您将此发送给您的IDP。这有他们要求的entityID等。
客户端,您将登录屏幕连接到堆栈。
使用IDP元数据地址配置堆栈以获取其元数据。
用户单击登录,堆栈发送AuthnRequest,IDP显示登录屏幕,用户进行身份验证,您将获得包含IDP已配置返回的断言(声明)的SAML令牌。
答案 1 :(得分:0)
我不确定我是否正确理解了用例,但是我认为移动客户端不应该执行任何实际的SAML处理;发生在服务提供商(SP)和身份提供商(IdP)之间。实际上,在这种情况下,OpenID Connect会更适合。但是,仅出于说明目的(在必须使用SAML的情况下),简而言之就是:
因此,最重要的是,编写一个在传统IdP上执行SAML登录的移动客户端是一项艰巨的任务,因为这意味着该移动应用程序本质上必须模仿Web浏览器。这是OpenID Connect更适合的地方,因为它具有不同的设计方法。因此,如果可能的话,请尝试使用OIDC。