1

我知道这里给出的答案是关于使用表单身份验证和 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。

一般来说,应用程序应该;

  1. 能够使用 Cookie 身份验证登录(Identity 负责此操作)
  2. Jwt 令牌应该也适用于 Apis(这也适用于 Jwt 方案)
  3. SSO 客户端应该从他们的 IdP 获得身份验证,当重定向到 AssertionConsumer() 时,我将创建其他声明,创建新的 ClaimsIdentity,创建 JWT 令牌(将其传递给客户端)并将用户带到仪表板。

我被困在第三点,即正确添加 SAML 方案而不覆盖 cookie/jwt 方案。

4

2 回答 2

1

您可以使用提供的示例项目中的设置。新添加的中间件不应干扰您已有的。

当 SAML2 IdP 重定向回您的应用程序时,您会得到一个标识已验证用户的结果,例如电子邮件地址或 SSN(如果它是政府 Id 提供者)。

您可以将该信息与角色(例如 SpecialCustomer、Citizen 或您已经拥有的现有角色)组合到 cookie 或 JWT 令牌中,就像您可能已经为其他用户所做的那样。这始终可以通过角色与其他 cookie 和令牌区分开来。常规[Authorize(....)]属性也可以正常工作。

于 2021-05-24T07:24:06.893 回答
1

该错误No sign-in authentication handler is registered for the scheme 'saml2'可能发生在您需要添加services.AddSaml2()app.UseSaml2()

于 2021-05-24T11:26:14.420 回答