【发布时间】:2022-01-11 19:58:45
【问题描述】:
我有一个 .Net 5 Entity Framework 项目,我已向其中添加了 ITfoxtec SAML 2.0 库。
我需要能够连接到使用 SAML 2.0 的公司网络。 IT 人员说我需要“创建一个 SAML 2.0 断言来指向公司 SAML 路线。”
我按照 Git 存储库中的代码示例,将所有需要的配置元素添加到我的 startup.cs 类中。
还在我的AuthController.cs 中添加了以下内容:
[Route("Login")]
public IActionResult Login(string returnUrl = null)
{
var binding = new Saml2RedirectBinding();
binding.SetRelayStateQuery(new Dictionary<string, string> { { relayStateReturnUrl, returnUrl ?? Url.Content("~/") } });
return binding.Bind(new Saml2AuthnRequest(config)).ToActionResult();
}
[Route("AssertionConsumerService")]
public async Task<IActionResult> AssertionConsumerService()
{
var binding = new Saml2PostBinding();
var saml2AuthnResponse = new Saml2AuthnResponse(config);
binding.ReadSamlResponse(Request.ToGenericHttpRequest(), saml2AuthnResponse);
if (saml2AuthnResponse.Status != Saml2StatusCodes.Success)
{
throw new AuthenticationException($"SAML Response status: {saml2AuthnResponse.Status}");
}
binding.Unbind(Request.ToGenericHttpRequest(), saml2AuthnResponse);
await saml2AuthnResponse.CreateSession(HttpContext, claimsTransform: (claimsPrincipal) => ClaimsTransform.Transform(claimsPrincipal));
var relayStateQuery = binding.GetRelayStateQuery();
var returnUrl = relayStateQuery.ContainsKey(relayStateReturnUrl) ? relayStateQuery[relayStateReturnUrl] : Url.Content("~/");
return Redirect(returnUrl);
}
项目构建并运行,但我不确定如何测试这个 ITfoxtec SAML 2.0 库。
有人有这方面的经验吗?
谢谢!
【问题讨论】:
标签: c# .net-core entity-framework-core saml-2.0 itfoxtec-identity-saml2