ASP.Net Core 中联合身份验证的替代方案是什么?

What is the Alternative to Federated Authentication in ASP.Net Core?

我有一个 Web API (.Net 4.6),它使用 FederatedAuthentication (System.IdentityModel.Services) 对我的用户进行身份验证,现在我正在尝试将它移植到 ASP.Net Core 2.2网页 API.

这是我现有的用于生成 FedAuth 令牌 cookie 的代码:

1. AuthController.cs

//... Create new Identity and Claims Principal.
ClaimsIdentity claimsIdentity = new ClaimsIdentity(User.Identity);
ClaimsPrincipal claimsPrincipal = new ClaimsPrincipal(claimsIdentity);

claimsIdentity.AddClaims(__getClaims());
claimsPrincipal.AddIdentity(claimsIdentity);

//... Create a new Session Security Token. 
  var token = FederatedAuthentication.SessionAuthenticationModule.CreateSessionSecurityToken(
claimsPrincipal, "MyAPP", DateTime.UtcNow, DateTime.UtcNow.AddMinutes(expirationTime), false);

//... Write a cookie.
FederatedAuthentication.SessionAuthenticationModule.
AuthenticateSessionSecurityToken(token, true);


在 Web.config 中:

<configSections>
    <!--WIF 4.5 sections -->
    <section name="system.identityModel" type="System.IdentityModel.Configuration.SystemIdentityModelSection, System.IdentityModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
    <section name="system.identityModel.services" type="System.IdentityModel.Services.Configuration.SystemIdentityModelServicesSection, System.IdentityModel.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
</configSections>

<modules>
  <add name="SessionAuthenticationModule" type="System.IdentityModel.Services.SessionAuthenticationModule, System.IdentityModel.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
</modules>

<system.identityModel>
    <identityConfiguration>
      <securityTokenHandlers>
        <remove type="System.IdentityModel.Tokens.SessionSecurityTokenHandler, System.IdentityModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
        <add type="System.IdentityModel.Services.Tokens.MachineKeySessionSecurityTokenHandler, System.IdentityModel.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
      </securityTokenHandlers>
    </identityConfiguration>
  </system.identityModel>

由于我所有的依赖应用程序都使用 Claims Identity 和 Claims Principal,我想在 ASP.net 核心中继续使用它们。

所以,我的问题是,创建会话安全令牌的方法是什么 (cookie)在 ASP.net 核心网站 API?

中声明身份

非常感谢!!

我相信我得到了我想要的东西; 这是我发现的两篇好文章:

  1. https://docs.microsoft.com/en-us/aspnet/core/security/authentication/cookie?view=aspnetcore-2.2

  2. https://jonhilton.net/2017/10/11/secure-your-asp.net-core-2.0-api-part-1-issuing-a-jwt/

编辑:第二个 link 由其作者更新,导致 404 错误。我找到了工作 link 并在此处更新。

注意:我在这里只发布 link 来回答我自己的问题的原因是它们是很长的文章,必须阅读很长时间才能理解主题。