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

时间:2016-02-10 19:41:32

标签: c# asp.net single-sign-on saml saml-2.0

我有一个自定义.NET CRM系统(系统A,IDP),其中包含基于表单的身份验证,我希望SSO使用我们购买的SAML 2.0 API(系统B,SP)。用户和密码存储在SQL数据库中,并且在成功登录到系统A后,我希望能够使用足够的数据向系统B发布断言以完成SSO过程。我要么在这个问题上找不到很多,要么我正在使用错误的关键词进行搜索,所以我希望有人可以指导我朝着正确的方向前进。我正在寻找一个很好的教程或地方开始如何从我的系统A生成SAML 2.0断言。

2 个答案:

答案 0 :(得分:2)

您可以使用Kentor.AuthServices 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中所做内容的精简版本,有关完整版本,请参阅https://github.com/KentorIT/authservices/blob/master/Kentor.AuthServices.StubIdp/Controllers/HomeController.cs#L66

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

答案 1 :(得分:-2)

如果您在商业广告之后,请查看our SAML v2.0 class library

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