Asp.net web api 将IdentityServer4.AccessTokenValidation和引用令牌与ASP.NET核心标识连接起来
我正在尝试构建一个由ASP.NET Web API后端支持的Angular 6应用程序。该应用程序根据一个单独的身份服务器4对用户进行身份验证,该服务器联合Azure AD,最终返回一个承载者参考令牌 从登录和身份验证(令牌)的角度来看,一切正常。用户访问站点,重定向到Azure AD,登录,然后重定向回Angular 6应用程序。对于API调用,令牌被注入头中,ASP.NET核心身份验证中间件验证令牌并返回数据Asp.net web api 将IdentityServer4.AccessTokenValidation和引用令牌与ASP.NET核心标识连接起来,asp.net-web-api,asp.net-identity,asp.net-core-2.0,identityserver4,bearer-token,Asp.net Web Api,Asp.net Identity,Asp.net Core 2.0,Identityserver4,Bearer Token,我正在尝试构建一个由ASP.NET Web API后端支持的Angular 6应用程序。该应用程序根据一个单独的身份服务器4对用户进行身份验证,该服务器联合Azure AD,最终返回一个承载者参考令牌 从登录和身份验证(令牌)的角度来看,一切正常。用户访问站点,重定向到Azure AD,登录,然后重定向回Angular 6应用程序。对于API调用,令牌被注入头中,ASP.NET核心身份验证中间件验证令牌并返回数据 services .AddAuthentication(options =
services
.AddAuthentication(options => {
options.DefaultScheme = IdentityServerAuthenticationDefaults.AuthenticationScheme;
options.DefaultAuthenticateScheme = IdentityServerAuthenticationDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = IdentityServerAuthenticationDefaults.AuthenticationScheme;
options.DefaultSignInScheme = IdentityServerAuthenticationDefaults.AuthenticationScheme;
})
.AddIdentityServerAuthentication(options => {
options.Authority = AuthClient.SsoBaseUrl;
options.RequireHttpsMetadata = false;
options.ApiName = AuthClient.SsoClientName;
options.ApiSecret = AuthClient.SsoClientSecret;
});
我的问题是,我正在尝试合并ASP.NET核心标识,我不确定通过AddIdentityServerAuthentication
返回的索赔主体
在何处/如何绑定
在这个应用程序的早期版本(ASP.NET Framework 4.7)中,我们使用了Ws-Federation
,它重定向回AccountController
中的ExternalCallbackLogin()
,执行通常的AuthenticationManager.GetExternalLoginInfoAsync()
然后SignInManager.ExternalSignInAsync()
然后(如果需要)AppUserManager.CreateAsync()
和AppUserManager.AddLoginAsync()
此代码基本上检查了[AspNetUserLogins]
表中的提供者特定密钥(来自声明),以映射到[AspNetUsers]
表中的用户
更改为IdentityServer4.AccessTokenValidation
后,我无法确定将此逻辑放在何处。由于我使用的是引用标记,因此它看起来不像JwtBearerEvents
(特别是OnTokenValidated
事件)没有被引发。事实上,不看起来有任何内省事件吗
我尝试在一个调用上述“管理器”方法的测试端点中测试逻辑(从技术上讲,它是为ASP.NET核心标识
等效方法更新的),但这也不起作用
例如,对SignInManager.getExternalLoginFoAsync()
的第一次调用返回null
我做错了什么?遇到了同样的问题。切换到引用令牌的效果很好,但现在我们尝试向已验证的标识添加声明,并且在没有OnTokenValidated事件的情况下无法找到解决方案。请使用OAuth2IntrojectEvents