成功进行ADFS身份验证后,如何构造Claims?

时间:2018-08-29 15:55:37

标签: c# asp.net-core adfs claims-based-identity

我们的应用程序重定向到外部ADFS登录以进行身份​​验证,然后路由回我们。我试图弄清楚如何将索赔信息返回到我们的网站后进行解析。我遇到的麻烦是找到.NET Core 2.1的有效示例。这是我所拥有的:

services.AddAuthentication(sharedOptions => {
                sharedOptions.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
                sharedOptions.DefaultSignInScheme = CookieAuthenticationDefaults.AuthenticationScheme;
                sharedOptions.DefaultChallengeScheme = WsFederationDefaults.AuthenticationScheme;
            })
               .AddWsFederation(options => {                   
                   options.MetadataAddress = config.Authentication.ADFSMetadataAddress;
                   options.Wtrealm = config.Authentication.ADFSWtrealm;
                   options.CallbackPath = "/Auth";
               }).AddCookie();

这部分工作正常,我可以登录并发送回我的应用程序。 Microsoft文档上的示例显示了如何实现自定义ClaimsAuthenticationManager来提取声明信息:

public class MyClaimsAuthenticationManager : ClaimsAuthenticationManager {
        public override ClaimsPrincipal Authenticate(string resourceName, ClaimsPrincipal incomingPrincipal) {
            if (incomingPrincipal != null && incomingPrincipal.Identity.IsAuthenticated == true) {
                ((ClaimsIdentity)incomingPrincipal.Identity).AddClaim(new Claim(ClaimTypes.Role, "Admin"));
            }
        return incomingPrincipal;
    }
}

但是它无法在.NET Core中找到该基类。我尝试添加NuGet软件包用于:

Microsoft.AspNetCore.Identity
Microsoft.Extensions.Identity.Core

甚至

System.Security.Claims

但没有骰子...在.NET Core中还有另一种方法可以实现这一点吗?

0 个答案:

没有答案