【问题标题】:SP-initiated SAML 2.0 POST via a Standards compliant Idp Metadata in C# Web APISP 通过 C# Web API 中符合标准的 Idp 元数据发起的 SAML 2.0 POST
【发布时间】:2018-03-20 10:21:06
【问题描述】:

我想集成 SP 发起的 SAML 2.0 POST。此外,我需要生成服务提供商的元数据以将其共享给我的客户。请有人对此有任何想法。示例代码会更有帮助。

【问题讨论】:

    标签: c# asp.net-web-api saml


    【解决方案1】:

    经过研究,我发现 Sustainsys.saml2 for C# Web API 是最好的选择,它几乎不需要编码,并且可以通过配置文件中的配置轻松集成。

    因此,要实现该实现,您需要以下内容:

    1. X509 证书,可以通过 cygwin 中的 openssl 工具生成。对于,您的网络应用程序。

    2. 用于进行身份验证的 ADFS 服务器

    3. 通过添加您为应用程序生成的 x509 证书,为您的应用程序生成 SAML 元数据。这是您可以轻松生成元数据的网站https://www.samltool.com/sp_metadata.php

    4. 然后在 Web 配置文件中添加 SAML 的配置。有关更多信息,您可以访问https://github.com/Sustainsys/Saml2

    5. 然后将此代码添加到控制器中的 index() 中

     if (User.Identity.IsAuthenticated)
                {
                    var ssotype = WebConfigurationManager.AppSettings["SSOType"];
                    if (!string.IsNullOrEmpty(ssotype) && ssotype == "onelogin")
    {
                        var email = System.Security.Claims.ClaimsPrincipal.Current.Claims.FirstOrDefault(x => x.Type.Equals("User.email")).Value;
                        Session["loginUserId"] = email;
                    }
                    else
                    {
                        var email = System.Security.Claims.ClaimsPrincipal.Current.Claims.FirstOrDefault(x => x.Type.Equals("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress")).Value;
                        Session["loginUserId"] = email;
                    }
                    Response.Redirect("index.html",false);
                }
                else
                {
                    String redirecturl = null;
                    var idp = Sustainsys.Saml2.Configuration.SustainsysSaml2Section.Current.IdentityProviders.FirstOrDefault();
                    var routevalues = new RouteValueDictionary();
                    routevalues.Add("idp", idp.EntityId);
                    redirecturl = "~/Saml2/SignIn?idp=" + HttpUtility.UrlEncode(idp.EntityId);
                    Response.Redirect(redirecturl,false);
                    
    }
      

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-11
      • 1970-01-01
      相关资源
      最近更新 更多