4

我正在尝试使用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 的 确切终点?

我错过了什么?

4

1 回答 1

1

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

查看 repo 中的 asp.net 核心示例应用程序以获取有关如何配置的示例。AspNetCore2 包包含一个处理程序,其工作方式与 Asp.NET Core 的任何其他外部身份验证处理程序相同。您通过身份验证质询启动登录顺序。

于 2019-01-17T09:53:16.767 回答