我知道 here 给出的答案是关于使用表单身份验证和 SAML。就我而言,我在 .Net 5 上使用 Asp.net 核心身份。另外,我使用了两种身份验证方案(Cookie 和 JWT)。
我的身份验证管道如下;
//include identity
services.AddIdentity<ApplicationUser, ApplicationRole>(SetupIdentityOptions)
.AddEntityFrameworkStores<ApplicationDbContext>()
.AddDefaultTokenProviders();
//configure cookie and Jwt scheme
services.ConfigureApplicationCookie(...)
services.AddAuthentication(...) //configures default Identity
.AddJwtBearer(options => {...})
services.AddAuthorization(options =>
{
options.FallbackPolicy = new AuthorizationPolicyBuilder()
.RequireAuthenticatedUser()
.Build();
});
我想知道的是我应该在这个管道中的什么地方添加 SAML2。
一般来说,应用程序应该;
我被困在第三点,即正确添加 SAML 方案而不覆盖 cookie/jwt 方案。
答案 0 :(得分:1)
您可以使用提供的 example project 中的设置。新添加的中间件不应干扰您已有的。
当 SAML2 IdP 重定向回您的应用程序时,您会得到一个结果来标识经过身份验证的用户,例如电子邮件地址或 SSN(如果它是政府 ID 提供者)。
您可以将该信息与角色(例如,SpecialCustomer、Citizen 或您已有的现有角色)组合到 cookie 或 JWT 令牌中,就像您可能已经为其他用户所做的那样。这始终可以通过角色与其他 cookie 和令牌区分开来。常规的 [Authorize(....)]
属性也可以正常工作。
答案 1 :(得分:1)
错误No sign-in authentication handler is registered for the scheme 'saml2'
可能会发生,因为您需要添加services.AddSaml2()
和app.UseSaml2()