我正在使用一个非常干净且简单的 .Net SAML 包,名为 ITFoxTec。
它工作得很好,但我的问题是,我不知道它是如何工作的。
当我将库添加到我的项目中时,我将以下内容添加到我的
ConfigureServices
代码文件的 Startup.cs
部分:
services.Configure<Saml2Configuration>(Configuration.GetSection("Saml2"));
services.Configure<Saml2Configuration>(saml2Configuration =>
{
var entityDescriptor = new EntityDescriptor();
entityDescriptor.ReadIdPSsoDescriptorFromUrl(new Uri(Configuration["Saml2:IdPMetadata"]));
if (entityDescriptor.IdPSsoDescriptor != null)
{
saml2Configuration.AllowedIssuer = entityDescriptor.EntityId;
saml2Configuration.SingleSignOnDestination = entityDescriptor.IdPSsoDescriptor.SingleSignOnServices.First().Location;
}
else
{
throw new Exception("IdPSsoDescriptor not loaded from metadata.");
}
});
services.AddSaml2();
然后我添加了一个在 ITFoxTec 网站上找到的
AuthController.cs
类。
效果很好,但我不知道它是如何工作的。
我在 Visual Studio 中单步调试了该项目,它以某种方式进入了
Login
路线([Route("Login")]
中的 AuthController
。
然后它会自动将我带到我在
SingleSignOnDestination
文件中为 appSettings.json
设置的 URL。
但我不知道它是如何到达那里的。
我问的原因是因为我不希望它在用户点击该网站时自动转到那里,我只希望它在用户按下登录按钮时转到那里。
有人可以帮忙吗?
谢谢!
它会自动将我带到我在 appSettings.json 文件中为 SingleSignOnDestination 设置的 URL。
但我不知道它是如何到达那里的。
我问的原因是因为我不希望它在用户点击该网站时自动转到那里,我只希望它在用户按下登录按钮时转到那里。
有不同的方法来处理这个问题,但我希望这是通过 attributes 在您的应用程序中处理的。查看您的控制器,如果控制器具有
[Authorize]
属性,它将要求用户登录才能继续。如果您想允许匿名访问某些区域,您可以从这些区域中删除 [Authorize]
属性。