如何在现有的网络核心应用程序中使用Sustainsys.Saml2.AspNetCore2?

时间:2019-01-16 21:27:20

标签: sustainsys-saml2

我正在尝试使用this saml2库提供的Sustainsys.Saml2和Sustainsys.Saml2.AspNetCore2库来实现IDP启动和SP启动的方案。

到目前为止,我参考了样例应用之后的事情:
1.通过nuget引用最新的Sustainsys.Saml2.AspNetCore2和Sustainsys.Saml2
2.修改后的Startup.cs以添加新选项
3.创建带有ACS端点的MVC控制器

我想了解的事情:
1.我是否需要启动Saml2Handler才能打到库的HandleRequestAsync()终点。
2.如何检索本金/索偿
3.对于sp发起的情况,当端点标识请求未通过身份验证时,如何将请求重定向到IDP?
startup.cs中的ConfigureServices方法

        public void ConfigureServices(IServiceCollection services)
            {
                services.AddAuthentication()
                    .AddSaml2(options => 
                    {
                        options.SPOptions.EntityId = new EntityId("https://localhost:3131/Saml2");
                        options.IdentityProviders.Add(
                            new IdentityProvider(
                                new EntityId("http://localhost:52071/Metadata"), options.SPOptions)
                            {
                                LoadMetadata = true
                            });

                        options.SPOptions.ServiceCertificates.Add(new X509Certificate2("Sustainsys.Saml2.Tests.pfx"));
                    });
            }

    **SSO Controller** 


            [Authorize(AuthenticationSchemes = "Saml2")] 
            public class SsoController : Controller
            {
                public SingleSignOnController(ILogger logger)
                {
                }

                [Route("saml2/ACS")]
                [HttpPost]
                public ActionResult ACS()
                {
                    try
                    {   
                    // Is request authenticated here by library? 
                    // I tried hitting this end point from stud idp portal, but it is    
  throwing " MVC Exception Handler: The method or operation is not implemented.    at Sustainsys.Saml2.AspNetCore2.Saml2Handler.AuthenticateAsync()
       at Microsoft.AspNetCore.Authentication.AuthenticationService"         
                    }
                    catch (Exception e)
                    {

                    }
                }
            }

我是否需要创建/实现自定义 Saml2Handler 并将其注入SSo控制器中?在这个ASPNETSAMPLE项目中,对于saml2 / ACS,我找不到确切的终点吗?

我想念什么?

1 个答案:

答案 0 :(得分:0)

Acs端点内置在处理程序中。删除您的SsoController。

在回购中检查asp.net核心示例应用程序,以获取有关如何配置的示例。 AspNetCore2程序包包含一个处理程序,该处理程序与Asp.NET Core的任何其他外部身份验证处理程序相同。您可以通过身份验证质询依次启动登录。