使用 SAML2 库实现 SP 发起的场景
Implement SP initiated scenario using SAML2 library
我们是服务提供商,正在尝试使用 SAML2 库实施 SP 发起的 SSO。我有以下问题
当最终用户尝试访问受保护的 SP application/resourceSP 端点应如何识别它应将身份验证请求重定向到哪个 IDP?
是否有任何标准格式来接受来自 IDP 用户的 first/Initial 请求?
将请求重定向到 IDP 时,向 IDP 发送响应的标准格式是什么?
我们的技术堆栈: asp .net(4.5) MVC、C# 和 SAML2 Sustainsys 库
我们的客户(在 SSO 术语 IDP 中)正在使用:
Azure AD 上 SP 启动的 SAML
我使用 SAML2 库实现了 IDP 发起的 SSO,其中 IDP 使用 SAML 响应到达我们的终点,我们使用 IDP 证书验证它并提取属性等
所以对于发起的 SP 我得到了关注,
[Route("RequestAccess")]
[HttpPost]
public ActionResult InitialRequest()
{
// How to Identify user and its IDP url?
// What should be the return type? (To redirect user to IDP)
}
// 一旦通过验证,IDP 就可以命中我们现有的端点来验证断言并重定向用户。我实现了这部分并且在 IDP 启动的设置中运行良好。
[Route("AssertionConsumer")]
[HttpPost]
public ActionResult ValidateIdpRequest()
{
var options = Saml2Controller.Options; //Coming from config
CommandResult result = CommandFactory.GetCommand(CommandFactory.AcsCommandName)
.Run(Request.ToHttpRequestData(),options);
string userName = result.Principal.FindFirst(ClaimTypes.NameIdentifier)?.Value;
//Set the cooking in response
//Return
}
我错过了什么?欢迎任何 suggestions/questions。
SP发起的场景我在网上找的都没有例子,也没有解释清楚。
那个问题叫做"home realm discovery"。不知何故用户多选择。有时,这是通过提供用户可以从中选择的 Idps 列表来完成的。有时它是通过为不同的用户提供不同的 URL(例如 customerX.myservice.com)来完成的,其中每个 customerX 子域映射到特定的 Idp。 Sustainsys.Saml2 库支持 SAML2 发现服务标准来处理此问题。
您正在自己使用低级 Sustainsys.Saml2 库,这让您有很多事情需要自己处理。它并不意味着可以直接使用。请改用 Sustainsys.Saml2.Owin 或 Sustainsys.Saml2.Mvc 高级库。它将为您进行重定向并处理返回的结果。
见2.
我们是服务提供商,正在尝试使用 SAML2 库实施 SP 发起的 SSO。我有以下问题
当最终用户尝试访问受保护的 SP application/resourceSP 端点应如何识别它应将身份验证请求重定向到哪个 IDP?
是否有任何标准格式来接受来自 IDP 用户的 first/Initial 请求?
将请求重定向到 IDP 时,向 IDP 发送响应的标准格式是什么?
我们的技术堆栈: asp .net(4.5) MVC、C# 和 SAML2 Sustainsys 库
我们的客户(在 SSO 术语 IDP 中)正在使用: Azure AD 上 SP 启动的 SAML
我使用 SAML2 库实现了 IDP 发起的 SSO,其中 IDP 使用 SAML 响应到达我们的终点,我们使用 IDP 证书验证它并提取属性等
所以对于发起的 SP 我得到了关注,
[Route("RequestAccess")]
[HttpPost]
public ActionResult InitialRequest()
{
// How to Identify user and its IDP url?
// What should be the return type? (To redirect user to IDP)
}
// 一旦通过验证,IDP 就可以命中我们现有的端点来验证断言并重定向用户。我实现了这部分并且在 IDP 启动的设置中运行良好。
[Route("AssertionConsumer")]
[HttpPost]
public ActionResult ValidateIdpRequest()
{
var options = Saml2Controller.Options; //Coming from config
CommandResult result = CommandFactory.GetCommand(CommandFactory.AcsCommandName)
.Run(Request.ToHttpRequestData(),options);
string userName = result.Principal.FindFirst(ClaimTypes.NameIdentifier)?.Value;
//Set the cooking in response
//Return
}
我错过了什么?欢迎任何 suggestions/questions。
SP发起的场景我在网上找的都没有例子,也没有解释清楚。
那个问题叫做"home realm discovery"。不知何故用户多选择。有时,这是通过提供用户可以从中选择的 Idps 列表来完成的。有时它是通过为不同的用户提供不同的 URL(例如 customerX.myservice.com)来完成的,其中每个 customerX 子域映射到特定的 Idp。 Sustainsys.Saml2 库支持 SAML2 发现服务标准来处理此问题。
您正在自己使用低级 Sustainsys.Saml2 库,这让您有很多事情需要自己处理。它并不意味着可以直接使用。请改用 Sustainsys.Saml2.Owin 或 Sustainsys.Saml2.Mvc 高级库。它将为您进行重定向并处理返回的结果。
见2.