【问题标题】:What is the Alternative to Federated Authentication in ASP.Net Core?ASP.Net Core 中联合身份验证的替代方案是什么?
【发布时间】:2018-12-31 06:40:30
【问题描述】:

我有一个使用 FederatedAuthentication (System.IdentityModel.Services) 对我的用户进行身份验证的 Web API (.Net 4.6),现在我正在尝试将其移植到 ASP.Net Core 2.2 Web 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 核心 Web API 中声明身份?

非常感谢!!

【问题讨论】:

    标签: asp.net-core federated-identity


    【解决方案1】:

    我相信我得到了我想要的; 以下是我发现的两篇好文章:

    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/

    编辑:第二个链接由他们的作者更新,导致 404 错误。我找到了工作链接并在此处更新。

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

    【讨论】:

    • 在回答这样的问题时,最好在链接之外加上相关的文字,这样如果链接消失了,答案还是可以的。在这种情况下,jonhilton.net 链接不再有效。
    猜你喜欢
    • 2020-10-29
    • 2017-02-09
    • 2018-02-23
    • 1970-01-01
    • 2019-08-31
    • 1970-01-01
    • 2015-05-09
    • 2018-04-13
    • 1970-01-01
    相关资源
    最近更新 更多