簡體   English   中英

使用來自 ADFS 的 JWT Bearer 身份驗證將 ASP.NET Framework 遷移到 ASP.NET Core 3.1

[英]Migrate ASP.NET Framework to ASP.NET Core 3.1 with JWT Bearer authentication from ADFS

ASP.NET 框架

我們有一個現有的 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://<adfs-server >/FederationMetadata/2007-06/FederationMetadata.xml

我們有一個 ADFS 3.0 服務器(在 Windows Server 2012 R2 上運行)發布這些 JWT 令牌。

ASP.NET 核心 3.1

當我們將 Web 服務器遷移到 ASP.NET Core 3.1 時,我們希望繼續使用相同的 ADFS 3.0 服務器向我們的網站頒發 JWT 令牌。

但是我在配置新服務器以驗證來自 ADFS 3.0 服務器的令牌時遇到問題。 這是我嘗試過的:

JwtBearer身份驗證

據我了解,JwtBearerAuthentication 需要支持 OpenIDConnect 的 ADFS 4.0?

我發現這個解決方法應該適用於我的情況,但是在我的應用程序中存儲發行者簽名密鑰似乎有點麻煩。 如果它在 ADFS 上發生變化怎么辦?

WsFederationAuthentication

我遵循了本指南,但在我看來這不支持承載身份驗證?

結論

使用從 ADFS 3.0 發布的 JWT 承載令牌的 ActiveDirectoryFederationServicesBearerAuthentication 的 ASP.NET Core 等效項是什么?

ADFS 2012 R2 可以發布 JWT 令牌,但不支持 OIDC 發現,它不使用 openid 連接發現規范公開元數據。 因此,您可以在 asp.net core web api 中使用AddJwtBearer擴展,但需要手動配置頒發者、受眾和簽名密鑰作為您提供的解決方法,此處顯示 . 當然,如果您可以將您的 ADFS 實例升級到“4.0”,這將使該場景更易於實現。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM