簡體   English   中英

通過 azure 廣告以 angular 身份驗證用戶並授權 blob 存儲

[英]authenticate users in angular through azure ad and authorize to blob storage

我在 angular 中構建了一個應用程序,我想讓經過身份驗證的用戶能夠根據他們的訪問權限下載文件 我嘗試使用 Azure AD 和 azure rbac 進行身份驗證和 autheriztion,並使用 azure blob 來存儲我的文件,我在互聯網上搜索了很多,雖然我遇到了關於如何通過 msal 庫進行身份驗證的解決方案,但我沒有找到任何關於如何對用戶進行身份驗證和 AUTHERIZE 用戶使用 blob 存儲的解決方案,我將非常感謝許多說明或教程如何解決這個問題 。 最好的問候,女孩

您的代碼是否在瀏覽器中運行? 目前瀏覽器@azure/blob-storage僅支持使用 SAS 令牌

BlobServiceClient構造函數確實采用TokenCredential ,這是您可以實現的接口:

https://docs.microsoft.com/en-us/javascript/api/@azure/core-auth/tokencredential?view=azure-node-latest

在向 Azure Blob 服務發送請求時,SDK 庫將使用提供的令牌作為不記名令牌。 不過,我還沒有用 RBAC 嘗試過這個。

希望未來 SDK 能夠更好地與瀏覽器的 AAD/RBAC 集成。

您需要使用以下方法獲取 blob 存儲的令牌:-

this.authService
      .acquireTokenSilent({
        scopes: ['https://storage.azure.com/user_impersonation'],
      })
      .then((tokenResponse) => {tokenResponse.accessToken})

然后像這樣包裝令牌:-

TestTokenCredential(tokenResponse.accessToken) {
    return {
      getToken: function (_scope, _opts) {
        return {
          token: tokenResponse.accessToken,
          expiresOnTimestamp: Date.now() + 60 * 60 * 1000,
        };
      },
    };
  }

並最終使用上述函數返回的令牌來獲取 blob 容器客戶端,例如:-

  private containerClient(token: any): ContainerClient {
    return new BlobServiceClient(
      `https://${this.picturesAccount}.blob.core.windows.net`,
      token
    ).getContainerClient(this.picturesContainer);
  }

暫無
暫無

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

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