挑戰:我們如何在 ASP.NET Core 2 中使用不同的 JWT 令牌頒發者啟用來自多個外部服務的 API 存取? 具體來說,我們需要支援來自 Firebase 和自訂 JWT 提供者的身份驗證。
解決方案: ASP.NET Core 的靈活性允許配置多個身份驗證方案,從而啟用來自各種 JWT 來源的身份驗證。 方法如下:
常見的錯誤是呼叫不含參數的AddAuthentication
。 對於多個身份驗證方案,您必須使用接受表示方案名稱的字串參數的重載。
多次使用 AddJwtBearer
,每個驗證方案(例如「Firebase」和「自訂」)使用一次。 在每個呼叫中,指定特定於每個 JWT 頒發者的 Authority
和 TokenValidationParameters
。
預設的身份驗證策略需要更新以適應多種方案。 使用AddAuthorization
設定策略,包括DefaultPolicy
。 確保「Firebase」和「自訂」方案均包含在 DefaultPolicy
中。
此範例示範了正確的配置:
<code class="language-csharp">services .AddAuthentication() .AddJwtBearer("Firebase", options => { // Configure Firebase JWT authentication settings here }) .AddJwtBearer("Custom", options => { // Configure Custom JWT authentication settings here }); services .AddAuthorization(options => { options.DefaultPolicy = new AuthorizationPolicyBuilder() .RequireAuthenticatedUser() .AddAuthenticationSchemes("Firebase", "Custom") .Build(); });</code>
對於複雜的授權需求,請利用基於策略的授權。這使您可以建立指定身份驗證方案和聲明要求的策略。
較新的 .NET Core 版本需要在 AddAuthentication
中指定預設驗證方案。
以上是如何在 ASP.NET Core 2 中實作多個 JWT 承載身份驗證方案?的詳細內容。更多資訊請關注PHP中文網其他相關文章!