ASP.NET C#应用程序SSO与SAML 2.0 API

ASP.NET C#应用程序SSO与SAML 2.0 API,c#,asp.net,single-sign-on,saml,saml-2.0,C#,Asp.net,Single Sign On,Saml,Saml 2.0,我有一个自定义的.NET CRM系统(system a,IDP),带有基于表单的身份验证,我希望SSO带有我们购买的SAML 2.0 API(system B,SP)。用户和密码存储在SQL数据库中,成功登录到系统A后,我希望能够向系统B发布断言,并提供足够的数据来完成SSO过程。我不是在这个主题上找不到很多东西,就是在用错误的关键词搜索,所以我希望有人能给我指引正确的方向。我正在寻找一个关于如何从我的系统a生成SAML2.0断言的好教程或起点。您可以使用SAML2库中的API来实现这一点 va

我有一个自定义的.NET CRM系统(system a,IDP),带有基于表单的身份验证,我希望SSO带有我们购买的SAML 2.0 API(system B,SP)。用户和密码存储在SQL数据库中,成功登录到系统A后,我希望能够向系统B发布断言,并提供足够的数据来完成SSO过程。我不是在这个主题上找不到很多东西,就是在用错误的关键词搜索,所以我希望有人能给我指引正确的方向。我正在寻找一个关于如何从我的系统a生成SAML2.0断言的好教程或起点。

您可以使用SAML2库中的API来实现这一点

var response = new Saml2Response(
            new EntityId(systemAUrl),
            CertificateHelper.SigningCertificate,
            new Uri(AssertionConsumerServiceUrl),
            null, null, claimsIdentity);

var bindingResult = Saml2Binding.Get(model.AssertionModel.ResponseBinding).Bind(response)

// If this is an MVC action you can convert the bindingResult to
// an ActionResult using the ToActionResult() extension from the
// Kentor.AuthServices.Mvc package.
return bindingResult.ToActionResult();

// If you're using web forms, you can use the Apply() extension
// method from the Kentor.AuthServices.HttpModule package. Apply
// calls Response.End() internally.
bindingResult.Apply(new HttpResponseWrapper(HttpContext.Current.Response));
上面的代码是存根idp中所做工作的浓缩版本,完整版本请参阅


免责声明:我是Kentor.AuthServices的作者。

如果您想要商业产品,请查看


我们包括一个ExampleIdentityProvider WebForms ASP.NET示例项目,该项目演示了如何调用API来构造封装在SAML响应中的SAML断言,并将其发送给服务提供商。

Try:我知道这是在使用MVC。您的解决方案在webforms应用程序中如何工作?@ChrisLombardi使用webforms示例更新了示例代码。