我正在为Web应用程序实现基于SAML 2.0的SSO功能。到目前为止,我已成功使用/测试Okta和Ping(目前主要目标IdP,目标当然是与任何符合SAML 2.0标准的IdP兼容)来验证用户。下一步是在我的应用程序和IdP之间启用帐户链接/绑定。由于我的网络应用上的帐户是基于电子邮件地址的,因此我倾向于使用电子邮件进行帐户关联/绑定的解决方案。
首先,我对这是否被视为良好做法感兴趣(使用电子邮件链接帐户),例如是否有可能存在无法获取用户电子邮件的IdP,或者被认为不安全的情况(如果用户可以更改其电子邮件地址)。
接下来,我将非常感谢有关实现帐户关联的最受欢迎和最广泛支持的机制的任何指示。根据我到目前为止所阅读的内容,我看到了以下选项:
根据迄今为止的初步测试,这些是我的结论。选项1适用于Okta和Ping,但这感觉有点习惯,即不太标准。是否有IDP不支持在属性部分中发送属性或提供电子邮件。选项2感觉很标准,但Okta似乎忽略了NameIDPolicy元素,所以它基本上不会使用Okta。另一方面,Ping尊重NameIDPolicy但仅支持emailAddress和未指定的格式。可能有不支持emailAddress格式的IdP吗?选项3似乎是最不可靠的解决方案。在Okta中,无论我指定的名称ID格式是什么,主题的值都是相同的"和"应用程序用户名",而Ping没有提供配置此方法的事件。另一方面,默认情况下(下一步,下一步,完成配置IdP的方式),Okta和Ping都在断言的主题中发送电子邮件地址。
最后,如果不鼓励使用电子邮件地址,我想可以使用任何类型的持久标识符代替电子邮件。但是,用户必须经历某种绑定/链接过程(例如,通过生成链接令牌,并通过电子邮件将包含这些令牌的链接发送给用户)。
我提到的3个选项中哪一个最有可能在现实世界中工作,即哪个是不同IdP提供商支持/启用的最佳选项。我可能完全偏离基础,这应该以不同的方式处理?关于这个主题的任何指针和最佳实践将不胜感激。