Uwierzytelnianie i autoryzacja aplikacji przy użyciu identyfikatora Entra firmy Microsoft w celu uzyskania dostępu do jednostek usługi Azure Relay

Usługa Azure Relay obsługuje używanie identyfikatora Entra firmy Microsoft do autoryzacji żądań do jednostek usługi Azure Relay (Połączenie hybrydowe, przekaźniki WCF). Za pomocą identyfikatora Entra firmy Microsoft możesz użyć kontroli dostępu opartej na rolach (RBAC) platformy Azure, aby udzielić uprawnień jednostce zabezpieczeń, która może być użytkownikiem, grupą lub jednostką usługi aplikacji. Aby dowiedzieć się więcej na temat ról i przypisań ról, zobacz Opis różnych ról.

Uwaga

Ta funkcja jest ogólnie dostępna we wszystkich regionach, z wyjątkiem platformy Microsoft Azure obsługiwanej przez firmę 21Vianet.

Omówienie

Gdy podmiot zabezpieczeń (użytkownik, grupa, aplikacja) próbuje uzyskać dostęp do jednostki usługi Relay, żądanie musi być autoryzowane. W przypadku identyfikatora Entra firmy Microsoft dostęp do zasobu jest procesem dwuetapowym.

  1. Najpierw tożsamość podmiotu zabezpieczeń jest uwierzytelniana, a token OAuth 2.0 jest zwracany. Nazwa zasobu do żądania tokenu to https://relay.azure.net. Jeśli aplikacja działa w ramach jednostki platformy Azure, takiej jak maszyna wirtualna platformy Azure, zestaw skalowania maszyn wirtualnych lub aplikacja funkcji platformy Azure, może użyć tożsamości zarządzanej w celu uzyskania dostępu do zasobów.
  2. Następnie token jest przekazywany jako część żądania do usługi Relay w celu autoryzowania dostępu do określonego zasobu (połączeń hybrydowych, przekaźników WCF). Firma Microsoft Entra autoryzuje prawa dostępu do zabezpieczonych zasobów za pośrednictwem kontroli dostępu na podstawie ról (RBAC) platformy Azure. Usługa Azure Relay definiuje zestaw wbudowanych ról platformy Azure, które obejmują typowe zestawy uprawnień używanych do uzyskiwania dostępu do jednostek usługi Relay. Możesz również zdefiniować role niestandardowe na potrzeby uzyskiwania dostępu do danych. Aby uzyskać listę wbudowanych ról obsługiwanych przez usługę Azure Relay, zobacz Role wbudowane platformy Azure dla usługi Azure Relay. Aplikacje natywne i aplikacje internetowe, które wysyłają żądania do usługi Relay, mogą również autoryzować za pomocą identyfikatora Entra firmy Microsoft.

Wbudowane role platformy Azure dla usługi Azure Relay

W przypadku usługi Azure Relay zarządzanie przestrzeniami nazw i wszystkimi powiązanymi zasobami za pośrednictwem witryny Azure Portal i interfejsu API zarządzania zasobami platformy Azure jest już chronione przy użyciu modelu RBAC platformy Azure. Platforma Azure udostępnia poniższe wbudowane role platformy Azure umożliwiające autoryzowanie dostępu do przestrzeni nazw usługi Relay:

Rola opis
Właściciel usługi Azure Relay Użyj tej roli, aby udzielić pełnego dostępu do zasobów usługi Azure Relay.
Odbiornik usługi Azure Relay Ta rola służy do udzielania dostępu do nasłuchiwania i odczytu jednostek do zasobów usługi Azure Relay.
Nadawca usługi Azure Relay Ta rola służy do udzielania dostępu do odczytu jednostek i wysyłania do zasobów usługi Azure Relay.

Zakres zasobu

Przed przypisaniem roli platformy Azure do podmiotu zabezpieczeń określ zakres dostępu, który powinien mieć podmiot zabezpieczeń. Najlepsze rozwiązania określają, że zawsze najlepiej przyznać tylko najwęższy możliwy zakres.

Poniższa lista zawiera opis poziomów, na których można określić zakres dostępu do zasobów usługi Azure Relay, począwszy od najwęższego zakresu:

  • Jednostki przekaźnika: przypisanie roli dotyczy określonej jednostki przekaźnika, takiej jak połączenie hybrydowe lub przekaźnik WCF.
  • Przestrzeń nazw przekaźnika: przypisanie roli ma zastosowanie do wszystkich jednostek usługi Relay w przestrzeni nazw.
  • Grupa zasobów: przypisanie roli dotyczy wszystkich zasobów usługi Relay w grupie zasobów.
  • Subskrypcja: przypisanie roli dotyczy wszystkich zasobów usługi Relay we wszystkich grupach zasobów w subskrypcji.

Uwaga

Pamiętaj, że propagacja przypisań ról platformy Azure może potrwać do pięciu minut. Aby uzyskać więcej informacji na temat sposobu definiowania ról wbudowanych, zobacz Omówienie definicji ról. Aby uzyskać informacje na temat tworzenia ról niestandardowych platformy Azure, zobacz Role niestandardowe platformy Azure.

Uwierzytelnianie z aplikacji

Kluczową zaletą korzystania z identyfikatora Entra firmy Microsoft z usługą Azure Relay jest to, że poświadczenia nie muszą być już przechowywane w kodzie. Zamiast tego możesz zażądać tokenu dostępu OAuth 2.0 z Platforma tożsamości Microsoft. Firma Microsoft Entra uwierzytelnia podmiot zabezpieczeń (użytkownika, grupy lub jednostki usługi) z uruchomioną aplikacją. Jeśli uwierzytelnianie powiedzie się, identyfikator Entra firmy Microsoft zwraca token dostępu do aplikacji, a aplikacja może następnie użyć tokenu dostępu do autoryzowania żądań do usługi Azure Relay.

W poniższych sekcjach pokazano, jak skonfigurować aplikację konsolową do uwierzytelniania przy użyciu Platforma tożsamości Microsoft 2.0. Aby uzyskać więcej informacji, zobacz omówienie Platforma tożsamości Microsoft (wersja 2.0).

Aby zapoznać się z omówieniem przepływu udzielania kodu OAuth 2.0, zobacz Autoryzowanie dostępu do aplikacji internetowych firmy Microsoft Entra przy użyciu przepływu udzielania kodu OAuth 2.0.

Rejestrowanie aplikacji w dzierżawie firmy Microsoft Entra

Pierwszym krokiem używania identyfikatora Entra firmy Microsoft do autoryzowania jednostek usługi Azure Relay jest zarejestrowanie aplikacji klienckiej w dzierżawie firmy Microsoft Entra w witrynie Azure Portal. Podczas rejestrowania aplikacji klienckiej należy podać informacje o aplikacji w usłudze AD. Identyfikator Entra firmy Microsoft udostępnia następnie identyfikator klienta (nazywany również identyfikatorem aplikacji), którego można użyć do skojarzenia aplikacji ze środowiskiem uruchomieniowym Microsoft Entra.

Aby uzyskać instrukcje krok po kroku dotyczące rejestrowania aplikacji w usłudze Microsoft Entra ID, zobacz Szybki start: rejestrowanie aplikacji przy użyciu identyfikatora Entra firmy Microsoft.

Ważne

Zanotuj identyfikator katalogu (dzierżawy) i identyfikator aplikacji (klienta). Te wartości będą potrzebne do uruchomienia przykładowej aplikacji.

Tworzenie wpisu tajnego klienta

Aplikacja potrzebuje klucza tajnego klienta, aby potwierdzić swoją tożsamość podczas żądania tokenu. W tym samym artykule połączonym wcześniej zobacz sekcję Dodawanie wpisu tajnego klienta, aby utworzyć klucz tajny klienta.

Ważne

Zanotuj klucz tajny klienta. Będzie ona potrzebna do uruchomienia przykładowej aplikacji.

Przypisywanie ról platformy Azure przy użyciu witryny Azure Portal

Przypisz jedną z ról usługi Azure Relay do jednostki usługi aplikacji w żądanym zakresie (jednostka przekaźnika, przestrzeń nazw, grupa zasobów, subskrypcja). Aby uzyskać szczegółowe instrukcje, zobacz Przypisywanie ról platformy Azure przy użyciu witryny Azure Portal.

Uruchamianie aplikacji przykładowej

  1. Pobierz przykładową aplikację konsolową z usługi GitHub.

  2. Uruchom aplikację lokalnie na komputerze zgodnie z instrukcjami z artykułu README.

    Uwaga

    Wykonaj te same kroki, aby uruchomić przykładową aplikację konsolową dla przekaźnika WCF.

Wyróżniony kod z przykładu

Oto kod z przykładu, który pokazuje, jak używać uwierzytelniania Microsoft Entra w celu nawiązania połączenia z usługą Azure Relay.

  1. Utwórz obiekt TokenProvider przy użyciu TokenProvider.CreateAzureActiveDirectoryTokenProvider metody .

    Jeśli rejestracja aplikacji nie została jeszcze utworzona, zobacz sekcję Rejestrowanie aplikacji przy użyciu identyfikatora Entra firmy Microsoft, aby ją utworzyć, a następnie utwórz wpis tajny klienta zgodnie z opisem w sekcji Tworzenie wpisu tajnego klienta.

    Jeśli chcesz użyć istniejącej rejestracji aplikacji, postępuj zgodnie z tymi instrukcjami, aby uzyskać identyfikator aplikacji (klienta) i identyfikator katalogu (dzierżawy).

    1. Zaloguj się w witrynie Azure Portal.
    2. Wyszukaj i wybierz pozycję Microsoft Entra ID przy użyciu paska wyszukiwania u góry.
    3. Na stronie Microsoft Entra ID wybierz pozycję Rejestracje aplikacji w sekcji Zarządzanie w menu po lewej stronie.
    4. Wybierz rejestrację aplikacji.
    5. Na stronie rejestracji aplikacji są widoczne wartości identyfikatora aplikacji (klienta) i identyfikatora katalogu (dzierżawy).

    Aby uzyskać klucz tajny klienta, wykonaj następujące kroki:

    1. Na stronie rejestracja aplikacji wybierz pozycję Certyfikaty i wpisy tajne w menu po lewej stronie.
    2. Użyj przycisku kopiowania w kolumnie Wartość wpisu tajnego w sekcji Wpisy tajne klienta.
    static TokenProvider GetAadTokenProvider(string clientId, string tenantId, string clientSecret)
    {
        return TokenProvider.CreateAzureActiveDirectoryTokenProvider(
            async (audience, authority, state) =>
            {
                IConfidentialClientApplication app = ConfidentialClientApplicationBuilder.Create(clientId)
                    .WithAuthority(authority)
                    .WithClientSecret(clientSecret)
                    .Build();
    
                var authResult = await app.AcquireTokenForClient(new [] { $"{audience}/.default" }).ExecuteAsync();
                return authResult.AccessToken;
            },
            $"https://login.microsoftonline.com/{tenantId}");
    }
    
  2. Utwórz obiekt Hybrid Połączenie ionListener lub Hybrid Połączenie ionClient, przekazując identyfikator URI połączenia hybrydowego i dostawcę tokenu utworzonego w poprzednim kroku.

    Odbiornik:

    var listener = new HybridConnectionListener(hybridConnectionUri, tokenProvider);    
    

    Nadawcy:

    var sender = new HybridConnectionClient(hybridConnectionUri, tokenProvider);    
    

Przykłady

Następne kroki

Aby dowiedzieć się więcej na temat usługi Azure Relay, zobacz następujące tematy.