如何使用 SAML 2.0 控制器执行测试?

How does one perform testing with a SAML 2.0 controller?

我有一个 .Net 5 Entity Framework 项目,我已将 ITfoxtec SAML 2.0 库添加到其中。

我需要能够连接到使用 SAML 2.0 的公司网络。 IT 人员说我需要“创建一个 SAML 2.0 断言以指向公司 SAML 路由。”

我遵循 Git 存储库中的代码示例,并将所有需要的配置元素添加到我的 startup.cs class.

也在我的 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 库。

有人有这方面的经验吗?

谢谢!

您只需打开浏览器并单击登录即可对其进行测试。 ITfoxtec Identity SAML 2.0 组件将使用您的代码重定向到您的公司 IdP,它期望通过浏览器返回 post。