Uzyskiwanie tokenów dostępu

Ukończone

Po uzyskaniu tokenu dostępu, którego aplikacja zawsze wymaga osadzania zawartości usługi Power BI, wymaga uzyskania tokenu Azure AD. W przypadku korzystania ze scenariusza Dla klientów aplikacja używa tokenu Azure AD do wygenerowania tokenu osadzania.

Aby było jasne:

  • Token dostępu dla scenariusza dla organizacji to token Azure AD, który zawiera oświadczenia używane przez aplikację do identyfikowania udzielonych uprawnień.
  • Token dostępu dla scenariusza Dla klientów jest tokenem osadzania, który reprezentuje fakty dotyczące zawartości usługi Power BI i sposobu uzyskiwania do nich dostępu przez aplikację. Aplikacja generuje token osadzania przy użyciu operacji interfejsu API REST usługi Power BI, która wymaga tokenu Azure AD.

Uzyskiwanie tokenów Azure AD

Użyj biblioteki Microsoft Authentication Library (MSAL), aby utworzyć logikę aplikacji, która uzyskuje tokeny Azure AD z Platforma tożsamości Microsoft. Biblioteka MSAL obsługuje różne architektury i platformy aplikacji, takie jak .NET, JavaScript, Java, Python, Android i iOS.

Porada

Podczas tworzenia aplikacji internetowej ASP.NET Core zalecamy użycie biblioteki uwierzytelniania sieci Web tożsamości firmy Microsoft. Ta biblioteka jest zestawem pakietów nazywanych Microsoft.Identity.Web. Można go zainstalować w programie NuGet lub Visual Studio.

Istnieją różne techniki uzyskiwania tokenu Azure AD przy użyciu biblioteki MSAL. Niektóre wymagają interakcji użytkownika za pośrednictwem przeglądarki internetowej, a inne nie wymagają interakcji z użytkownikiem. Ogólnie rzecz biorąc, metoda, którą chcesz uzyskać Azure AD token, zależy od tego, czy aplikacja jest publiczną aplikacją kliencką (np. aplikacją klasyczną lub mobilną) czy poufnym aplikacją kliencką (na przykład aplikacją internetową). Scenariusz osadzania ma również wpływ na wybór.

Nie jest to zamiar tej lekcji opisać techniki, które uzyskują tokeny Azure AD. Aby uzyskać więcej informacji, zobacz Uzyskiwanie i buforowanie tokenów przy użyciu biblioteki Microsoft Authentication Library (MSAL).

Porada

Gdy przykładowe aplikacje narzędzia do konfigurowania osadzania są zgodne z wymaganiami aplikacji, rozważ skopiowanie przykładowego kodu w celu uzyskania tokenów Azure AD.

Aby umożliwić aplikacji uzyskiwanie tokenów Azure AD, jego plik konfiguracji powinien zawierać następujące ustawienia:

  • TenantId — Wymagane tylko dla jednostki usługi. Jest to identyfikator dzierżawy Azure AD.
  • ClientId -Wymagane. To twoja Azure AD app ApplicationID (ClientID).
  • ClientSecret lub ClientCertificate — wymagane tylko dla jednostki usługi.
  • PbiUsername — Wymagane tylko dla konta głównego użytkownika.
  • PbiPassword — Wymagane tylko dla konta głównego użytkownika.

Ważne

Niezależnie od tego, czy używasz certyfikatów, wpisów tajnych klienta, czy poświadczeń konta użytkownika głównego, należy wykonać kroki ochrony przed nieautoryzowanym dostępem i użyciem. Zalecamy korzystanie z usługi Azure Key Vault, która chroni klucze kryptograficzne, certyfikaty i wpisy tajne w chmurze.

Uzyskiwanie tokenów osadzania

GenerateTokenRequestV2 Użyj operacji interfejsu API REST usługi Microsoft Power BI, aby zażądać tokenu osadzania. Istnieją inne powiązane operacje, które generują tokeny osadzania dla innych typów zawartości usługi Power BI. Wszystkie operacje interfejsu API wymagają tokenu Azure AD.

Porada

Podczas tworzenia aplikacji .NET zalecamy zainstalowanie pakietu Microsoft.PowerBI.Api . Można go zainstalować w programie NuGet lub Visual Studio.

Rozważmy następujący kod, który pokazuje sposób generowania tokenu osadzania. Token zawiera oświadczenia dla wszystkich raportów i zestawów danych z obszaru roboczego i umożliwia użytkownikom aplikacji tworzenie lub edytowanie raportów. W szczególności wykonuje następujące czynności:

  1. Nawiązuje połączenie z usługą Power BI.
  2. Deklaruje zmienną o nazwie reportTokenRequests do przechowywania żądań tokenów raportu.
  3. Wylicza wszystkie raporty w obszarze roboczym, tworząc listę EmbeddedReport obiektów (przy użyciu klasy pomocniczej). Każdy obiekt opisuje identyfikator, nazwę i adres URL osadzania raportu. Aplikacja wymaga identyfikatora raportu do wygenerowania tokenu. Nazwa jest wymagana do prezentowania użytkownikom w menu, a adres URL osadzania jest wymagany do osadzania raportu. Kod dodaje żądanie tokenu raportu umożliwiające edytowanie raportu do zmiennej reportTokenRequests .
  4. Deklaruje zmienną o nazwie datasetTokenRequests do przechowywania żądań tokenów zestawu danych.
  5. Wylicza wszystkie zestawy danych w obszarze roboczym, tworząc listę EmbeddedDataset obiektów (przy użyciu klasy pomocnika). Każdy obiekt opisuje identyfikator, nazwę i adres URL osadzania zestawu danych. Aplikacja wymaga identyfikatora zestawu danych w celu wygenerowania tokenu. Nazwa może być wymagana do przedstawienia jej użytkownikom w menu, a adres URL osadzania jest wymagany do osadzania zestawu danych. Kod dodaje żądanie tokenu zestawu danych do zmiennej datasetTokenRequests .
  6. Generuje żądanie tokenu obszaru roboczego (wymagane, gdy użytkownicy tworzą raporty), które są dodawane do zmiennej workspaceRequests .
  7. GenerateTokenRequestV2 Używa metody do łączenia żądań tokenu raportu, żądań tokenu zestawu danych i żądania tokenu obszaru roboczego.
  8. Używa GenerateTokenAsync metody do generowania tokenu osadzania.
  9. Przechowuje token osadzania w zmiennej ciągu.
// Connect to Power BI
var client = GetPowerBiClient();

// Get reports in the workspace
var reports = (await client.Reports.GetReportsInGroupAsync(_workspaceId)).Value;

var reportList = new List<EmbeddedReport>();
var reportTokenRequests = new List<GenerateTokenRequestV2Report>();

foreach (var report in reports)
{
    reportList.Add(new EmbeddedReport
    {
        Id = report.Id.ToString(),
        Name = report.Name,
        EmbedUrl = report.EmbedUrl
    });

    reportTokenRequests.Add(new GenerateTokenRequestV2Report(report.Id, allowEdit: true));
}

// Get datasets in the workspace
var datasets = (await client.Datasets.GetDatasetsInGroupAsync(_workspaceId)).Value;

var datasetList = new List<EmbeddedDataset>();
var datasetTokenRequests = new List<GenerateTokenRequestV2Dataset>();

foreach (var dataset in datasets)
{
    datasetList.Add(new EmbeddedDataset
    {
        Id = dataset.Id.ToString(),
        Name = dataset.Name,
        EmbedUrl = dataset.QnaEmbedURL
    });

    datasetTokenRequests.Add(new GenerateTokenRequestV2Dataset(dataset.Id));
}

// Generate token request for the workspace
var workspaceRequests = new GenerateTokenRequestV2TargetWorkspace[] {
    new GenerateTokenRequestV2TargetWorkspace(_workspaceId)
};

// Bundle token requests for reports, datasets, and the workspace
var tokenRequest = new GenerateTokenRequestV2(
    reports: reportTokenRequests,
    datasets: datasetTokenRequests,
    targetWorkspaces: workspaceRequests
);

// Generate the embed token
string embedToken = (await client.EmbedToken.GenerateTokenAsync(tokenRequest)).Token;

Aplikacja powinna wyświetlić wartość zmiennej embedToken na stronie osadzania HTML. Logika po stronie klienta może następnie użyć tokenu osadzania do osadzania zawartości w elemecie div .

Uwaga

Aby dowiedzieć się, jak osadzać zawartość usługi Power BI, zapoznaj się z modułem Osadzanie zawartości usługi Power BI .

Aby umożliwić aplikacji uzyskiwanie tokenów osadzania, jego plik konfiguracji powinien zawierać szczegółowe informacje o zawartości możliwej do osadzania. Może zawierać określone identyfikatory raportów i identyfikatory zestawów danych lub częściej identyfikatory grupowe obszarów roboczych, które zawierają zawartość z możliwością osadzania.

Aby uzyskać więcej informacji, zobacz Osadzanie tokenu — generowanie tokenu.

Odświeżenie tokenów dostępu

Tokeny dostępu mają czas wygaśnięcia. Po wygenerowaniu użytkownicy aplikacji mają ograniczony czas na interakcję z zawartością usługi Power BI, która ich używa. Aby zapewnić użytkownikom aplikacji ciągłe środowisko pracy, aplikacja powinna odświeżyć tokeny dostępu przed wygaśnięciem przy użyciu interfejsu API klienta usługi Power BI.

Uwaga

Aby dowiedzieć się więcej na temat interfejsu API klienta, zapoznaj się z modułem Integrowanie zawartości z interfejsami API klienta usługi Power BI .

Aby uzyskać więcej informacji, zobacz Odświeżanie tokenu dostępu.

Eksplorowanie innych zasobów

Aby dowiedzieć się więcej, watch przewodnik deweloperów usługi Power BI dotyczący serii wideo Azure AD Security. Ta seria składa się z sześciu filmów, które obejmują dogłębną teorię. Ted Pattison, który jest członkiem zespołu doradczego klienta usługi Power BI (CAT) w firmie Microsoft, wyprodukował tę serię wideo.