【问题标题】:How does one perform testing with a SAML 2.0 controller?如何使用 SAML 2.0 控制器进行测试?
【发布时间】: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


    【解决方案1】:

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

    【讨论】:

    • 谢谢!企业 IdP 端点是否通常只是一个控制器 URL?此外,我的 .Net Core SP 应用程序是否需要一个 GET 方法来连接到 IdP 端点和一个 POST 方法来接收 IdP 答案?再次感谢!
    • 企业 IdP 通常采用描述端点的元数据端点。您的 .NET Core SP 应用程序将发送一个 GET,而不是接收它。您的 .NET Core SP 应用需要一个 POST 端点来接收 IdP 响应。
    猜你喜欢
    • 2018-10-01
    • 1970-01-01
    • 2012-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-12
    • 1970-01-01
    相关资源
    最近更新 更多