我们有一个现有的ASP.NET Framework网站,该网站使用ActiveDirectoryFederationServicesBearerAuthentication进行身份验证:
app.UseActiveDirectoryFederationServicesBearerAuthentication(
new ActiveDirectoryFederationServicesBearerAuthenticationOptions
{
MetadataEndpoint = ConfigurationManager.AppSettings["ida:AdfsMetadataEndpoint"],
TokenValidationParameters =
new TokenValidationParameters
{
ValidAudience = ConfigurationManager.AppSettings["ida:Audience"],
RequireSignedTokens = true
}
});
“ ida:AdfsMetadataEndpoint”的值是:
https://
/FederationMetadata/2007-06/FederationMetadata.xml
我们有一个ADFS 3.0服务器(在Windows Server 2012 R2上运行)来发行这些JWT令牌。
当我们通过ASP.NET Core 3.1迁移Web服务器时,我们希望继续使用同一ADFS 3.0服务器向我们的网站发行JWT令牌。
但是我在配置新服务器以验证来自ADFS 3.0服务器的令牌时遇到问题。这是我尝试过的:
据我了解,JwtBearerAuthentication需要支持OpenIDConnect的ADFS 4.0吗?
我发现this的解决方法适用于我的情况,但是将发行者签名密钥存储在我的应用程序中似乎有点hack。如果在ADFS上发生更改怎么办?
我遵循了这个guide,但是在我看来,这不支持Bearer身份验证?
使用从ADFS 3.0发出的JWT承载令牌的ActiveDirectoryFederationServicesBearerAuthentication的ASP.NET Core等效项是什么?
答案 0 :(得分:0)
ADFS 2012 R2可以发行JWT令牌,但不支持OIDC发现,它不使用openid connect Discovery规范公开元数据。因此,您可以在asp.net核心网络api中使用AddJwtBearer
扩展名,但需要手动配置发行者,受众和签名密钥,作为提供和here显示的解决方法。当然,如果可以将ADFS实例升级到“ 4.0”,这将使方案更易于实现。