我正在尝试使用此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 的 确切终点?
我错过了什么?