我们的应用程序重定向到外部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中还有另一种方法可以实现这一点吗?