Udostępnij za pośrednictwem


Skonfiguruj niestandardowego dostawcę poczty e-mail do wysyłania jednorazowych kodów dostępu (podgląd)

Dotyczy: Biały okrąg z szarym symbolem X. Dzierżawcy siły roboczej Zielony okrąg z białym symbolem znacznika wyboru. Dzierżawcy zewnętrzni (dowiedz się więcej)

Ten artykuł zawiera przewodnik po konfigurowaniu niestandardowego dostawcy poczty e-mail dla typu zdarzenia Wyślij jednorazowy kod dostępu (OTP). Zdarzenie jest wyzwalane po aktywowaniu poczty e-mail OTP, umożliwia wywołanie interfejsu API REST w celu użycia własnego dostawcy poczty e-mail przez wywołanie interfejsu API REST.

Napiwek

Wypróbuj teraz

Aby wypróbować tę funkcję, przejdź do dema Woodgrove Groceries i uruchom przypadek użycia „Użyj niestandardowego dostawcy poczty e-mail dla kodu jednorazowego”.

Wymagania wstępne

Krok 1. Tworzenie aplikacji funkcji platformy Azure

W tej sekcji pokazano, jak skonfigurować aplikację funkcji platformy Azure w witrynie Azure Portal. Funkcja API to brama do Twojego dostawcy poczty e-mail. Utworzysz aplikację funkcji platformy Azure do hostowania funkcji wyzwalacza HTTP i skonfigurujesz ustawienia w funkcji.

Napiwek

Kroki opisane w tym artykule mogą się nieznacznie różnić w zależności od portalu, od którego zaczynasz.

  1. Zaloguj się do witryny Azure Portal jako co najmniej administrator aplikacji i administrator uwierzytelniania.

  2. W menu witryny Azure Portal lub na stronie głównej wybierz pozycję Utwórz zasób.

  3. Wyszukaj i wybierz pozycję Aplikacja funkcji, a następnie wybierz pozycję Utwórz.

  4. Na stronie Tworzenie aplikacji funkcji, wybierz pozycję Zużycie, a następnie kliknij Wybierz.

  5. Na stronie Tworzenie aplikacji funkcji (Zużycie) na karcie Podstawy utwórz aplikację funkcji przy użyciu ustawień określonych w poniższej tabeli:

    Ustawienie Sugerowana wartość opis
    Subskrypcja Twoja subskrypcja Subskrypcja, w ramach której jest tworzona nowa aplikacja funkcji.
    Grupa zasobów myResourceGroup Wybierz grupę zasobów używaną do konfigurowania zasobów usługi Azure Communications Service i usługi komunikacji poczty e-mail w ramach wymagań wstępnych
    Nazwa aplikacji funkcji Nazwa unikatowa w skali globalnej Nazwa identyfikująca nową aplikację funkcjonalną. Prawidłowe znaki to a-z (bez uwzględniania wielkości liter), 0-9i -.
    Wdrażanie kodu lub obrazu kontenera Kod Opcja publikowania plików kodu lub kontenera Docker. Na potrzeby tego samouczka wybierz pozycję Kod.
    Stos wykonawczy .NET Preferowany język programowania. Na potrzeby tego samouczka wybierz pozycję .NET.
    Wersja 8 (LTS) W toku Wersja środowiska uruchomieniowego platformy .NET. "W trakcie oznacza, że można tworzyć i modyfikować funkcje w portalu, co jest zalecane w tym przewodniku."
    Region Preferowany region Wybierz region, który znajduje się blisko Ciebie lub w pobliżu innych usług, do których mogą uzyskiwać dostęp funkcje.
    System operacyjny Windows System operacyjny jest wstępnie wybierany na podstawie wyboru stosu środowiska uruchomieniowego.
  6. Wybierz pozycję Przejrzyj i utwórz , aby przejrzeć wybrane opcje konfiguracji aplikacji, a następnie wybierz pozycję Utwórz. Wdrożenie zajmuje kilka minut.

  7. Po wdrożeniu wybierz pozycję Przejdź do zasobu , aby wyświetlić nową aplikację funkcji.

1.1. Tworzenie funkcji wyzwalacza HTTP

Po utworzeniu aplikacji funkcji platformy Azure utwórz funkcję wyzwalacza HTTP. Wyzwalacz HTTP umożliwia wywołanie funkcji z żądaniem HTTP. Ten wyzwalacz HTTP jest powiązany z niestandardowym rozszerzeniem uwierzytelniania Microsoft Entra.

  1. W aplikacji funkcji z menu wybierz pozycję Funkcje.
  2. Wybierz pozycję Utwórz funkcję.
  3. W oknie Tworzenie funkcji w obszarze Wybierz szablon wyszukaj i wybierz szablon wyzwalacza HTTP. Wybierz Dalej.
  4. W obszarze Szczegóły szablonu wprowadź wartość CustomAuthenticationExtensionsAPI dla właściwości Nazwa funkcji.
  5. Dla Poziomu autoryzacji wybierz Funkcję.
  6. Wybierz pozycję Utwórz.

1.2 Edytowanie funkcji

Kod rozpoczyna się od odczytywania przychodzącego obiektu JSON. Id firmy Microsoft Entra wysyła obiekt JSON do twojego interfejsu API. W tym przykładzie odczytuje on adres e-mail (identyfikator) i protokół OTP. Następnie kod wysyła szczegóły do usługi komunikacji w celu wysłania wiadomości e-mail przy użyciu szablonu dynamicznego.

Ten przewodnik z instrukcjami przedstawia zdarzenie wysyłania OTP przy użyciu usług Azure Communication Services i SendGrid. Użyj zakładek, aby wybrać implementację.

  1. Z menu wybierz pozycję Kod i testowanie.

  2. Zastąp cały kod poniższym fragmentem kodu.

    using System.Dynamic;
    using System.Text.Json;
    using System.Text.Json.Nodes;
    using System.Text.Json.Serialization;
    using Azure.Communication.Email;
    using Microsoft.AspNetCore.Http;
    using Microsoft.AspNetCore.Http.HttpResults;
    using Microsoft.AspNetCore.Mvc;
    using Microsoft.Azure.Functions.Worker;
    using Microsoft.Extensions.Logging;
    
    namespace Company.AuthEvents.OnOtpSend.CustomEmailACS
    {
        public class CustomEmailACS
        {
            private readonly ILogger<CustomEmailACS> _logger;
    
            public CustomEmailACS(ILogger<CustomEmailACS> logger)
            {
                _logger = logger;
            }
    
            [Function("OnOtpSend_CustomEmailACS")]
            public async Task<IActionResult> RunAsync([HttpTrigger(AuthorizationLevel.Function, "post")] HttpRequest req)
            {
                _logger.LogInformation("C# HTTP trigger function processed a request.");
    
                // Get the request body
                string requestBody = await new StreamReader(req.Body).ReadToEndAsync();
                JsonNode jsonPayload = JsonNode.Parse(requestBody)!;
    
                // Get OTP and mail to
                string emailTo = jsonPayload["data"]!["otpContext"]!["identifier"]!.ToString();
                string otp = jsonPayload["data"]!["otpContext"]!["onetimecode"]!.ToString();
    
                // Send email
                await SendEmailAsync(emailTo, otp);
    
                // Prepare response
                ResponseObject responseData = new ResponseObject("microsoft.graph.OnOtpSendResponseData");
                responseData.Data.Actions = new List<ResponseAction>() { new ResponseAction(
                    "microsoft.graph.OtpSend.continueWithDefaultBehavior") };
    
                return new OkObjectResult(responseData);
            }
    
            private async Task SendEmailAsync(string emailTo, string code)
            {
                // Get app settings
                var connectionString = Environment.GetEnvironmentVariable("mail_connectionString");
                var sender = Environment.GetEnvironmentVariable("mail_sender");
                var subject = Environment.GetEnvironmentVariable("mail_subject");
    
                try
                {
                    if (!string.IsNullOrEmpty(connectionString))
                    {
                        var emailClient = new EmailClient(connectionString);
                        var body = EmailTemplate.GenerateBody(code);
    
                        _logger.LogInformation($"Sending OTP to {emailTo}");
    
                        EmailSendOperation emailSendOperation = await emailClient.SendAsync(
                        Azure.WaitUntil.Started,
                        sender,
                        emailTo,
                        subject,
                        body);
                    }
                }
                catch (System.Exception ex)
                {
                    _logger.LogError(ex.Message);
                }
            }
        }
    
        public class ResponseObject
        {
            [JsonPropertyName("data")]
            public Data Data { get; set; }
    
            public ResponseObject(string dataType)
            {
                Data = new Data(dataType);
            }
        }
    
        public class Data
        {
            [JsonPropertyName("@odata.type")]
            public string DataType { get; set; }
            [JsonPropertyName("actions")]
            public List<ResponseAction> Actions { get; set; }
    
            public Data(string dataType)
            {
                DataType = dataType;
            }
        }
    
        public class ResponseAction
        {
            [JsonPropertyName("@odata.type")]
            public string DataType { get; set; }
    
            public ResponseAction(string dataType)
            {
                DataType = dataType;
            }
        }
    
        public class EmailTemplate
        {
            public static string GenerateBody(string oneTimeCode)
            {
                return @$"<html><body>
                <div style='background-color: #1F6402!important; padding: 15px'>
                    <table>
                    <tbody>
                        <tr>
                            <td colspan='2' style='padding: 0px;font-family: "Segoe UI Semibold", "Segoe UI Bold", "Segoe UI", "Helvetica Neue Medium", Arial, sans-serif;font-size: 17px;color: white;'>Woodgrove Groceries live demo</td>
                        </tr>
                        <tr>
                            <td colspan='2' style='padding: 15px 0px 0px;font-family: "Segoe UI Light", "Segoe UI", "Helvetica Neue Medium", Arial, sans-serif;font-size: 35px;color: white;'>Your Woodgrove verification code</td>
                        </tr>
                        <tr>
                            <td colspan='2' style='padding: 25px 0px 0px;font-family: "Segoe UI", Tahoma, Verdana, Arial, sans-serif;font-size: 14px;color: white;'> To access <span style='font-family: "Segoe UI Bold", "Segoe UI Semibold", "Segoe UI", "Helvetica Neue Medium", Arial, sans-serif; font-size: 14px; font-weight: bold; color: white;'>Woodgrove Groceries</span>'s app, please copy and enter the code below into the sign-up or sign-in page. This code is valid for 30 minutes. </td>
                        </tr>
                        <tr>
                            <td colspan='2' style='padding: 25px 0px 0px;font-family: "Segoe UI", Tahoma, Verdana, Arial, sans-serif;font-size: 14px;color: white;'>Your account verification code:</td>
                        </tr>
                        <tr>
                            <td style='padding: 0px;font-family: "Segoe UI Bold", "Segoe UI Semibold", "Segoe UI", "Helvetica Neue Medium", Arial, sans-serif;font-size: 25px;font-weight: bold;color: white;padding-top: 5px;'>
                            {oneTimeCode}</td>
                            <td rowspan='3' style='text-align: center;'>
                                <img src='https://woodgrovedemo.com/custom-email/shopping.png' style='border-radius: 50%; width: 100px'>
                            </td>
                        </tr>
                        <tr>
                            <td style='padding: 25px 0px 0px;font-family: "Segoe UI", Tahoma, Verdana, Arial, sans-serif;font-size: 14px;color: white;'> If you didn't request a code, you can ignore this email. </td>
                        </tr>
                        <tr>
                            <td style='padding: 25px 0px 0px;font-family: "Segoe UI", Tahoma, Verdana, Arial, sans-serif;font-size: 14px;color: white;'> Best regards, </td>
                        </tr>
                        <tr>
                            <td>
                                <img src='https://woodgrovedemo.com/Company-branding/headerlogo.png' height='20'>
                            </td>
                            <td style='font-family: "Segoe UI", Tahoma, Verdana, Arial, sans-serif;font-size: 14px;color: white; text-align: center;'>
                                <a href='https://woodgrovedemo.com/Privacy' style='color: white; text-decoration: none;'>Privacy Statement</a>
                            </td>
                        </tr>
                    </tbody>
                    </table>
                </div>
                </body></html>";
            }
        }
    }
    
  3. Wybierz Pobierz adres URL funkcji i skopiuj adres URL klucza funkcji, który będzie stąd używany i określany jako {Function_Url}. Zamknij funkcję.

Krok 2. Dodawanie parametry połączenia do funkcji platformy Azure

Parametry połączenia umożliwiają zestawom SDK usług komunikacyjnych łączenie się i uwierzytelnianie z platformą Azure. W przypadku usług Azure Communication Services i SendGrid należy dodać te parametry połączenia do aplikacji funkcji platformy Azure jako zmienne środowiskowe.

2.1: Wyodrębnij ciągi połączeń i punkt końcowy usługi z zasobu Azure Communication Services

Dostęp do parametrów połączenia i punktów końcowych usługi Communication Services można uzyskać z poziomu portalu Azure lub programowo za pomocą interfejsów API usługi Azure Resource Manager.

  1. Na stronie głównej w witrynie Azure Portal otwórz menu portalu, wyszukaj i wybierz pozycję Wszystkie zasoby.

  2. Wyszukaj i wybierz usługę Azure Communications Service utworzoną w ramach wymagań wstępnych tego artykułu.

  3. W okienku po lewej stronie wybierz listę rozwijaną Ustawienia , a następnie wybierz pozycję Klucze.

  4. Skopiuj Endpoint, i z Klucz podstawowy skopiuj wartości dla Klucz i Ciąg połączenia.

    Zrzut ekranu przedstawiający stronę Klucze usługi Azure Communications z punktem końcowym i lokalizacjami kluczy.

2.2: Dodawanie parametry połączenia do funkcji platformy Azure

  1. Wróć do funkcji Azure, którą utworzyłeś w sekcji Tworzenie aplikacji funkcji Azure.

  2. Na stronie Przegląd aplikacji funkcji w menu po lewej stronie wybierz pozycję Ustawienia>Zmienne środowiskowe, aby dodać następujące ustawienia aplikacji. Po dodaniu wszystkich ustawień wybierz pozycję Zastosuj, a następnie potwierdź.

    Ustawienie Wartość (przykład) opis
    mail_connectionString https://ciamotpcommsrvc.unitedstates.communication.azure.com/:accesskey=A1bC2dE3fH4iJ5kL6mN7oP8qR9sT0u Punkt końcowy usług Azure Communication Services
    mail_sender from.email@myemailprovider.com Adres e-mail nadawcy.
    mail_subject CIAM Demo Temat wiadomości e-mail.

Krok 3. Rejestrowanie niestandardowego rozszerzenia uwierzytelniania

W tym kroku skonfigurujesz niestandardowe rozszerzenie uwierzytelniania, którego identyfikator Entra firmy Microsoft używa do wywoływania funkcji platformy Azure. Rozszerzenie uwierzytelniania niestandardowego zawiera informacje o punkcie końcowym interfejsu API REST, twierdzeniach, które pobiera z Twojego interfejsu API REST, oraz metodach uwierzytelniania w Twoim interfejsie API REST. Użyj portalu Azure lub Microsoft Graph, aby zarejestrować aplikację i uwierzytelnić własne rozszerzenie uwierzytelniania w funkcji platformy Azure.

Rejestrowanie niestandardowego rozszerzenia uwierzytelniania

  1. Zaloguj się do witryny Azure Portal jako co najmniej administrator aplikacji i administrator uwierzytelniania.

  2. Wyszukaj i wybierz pozycję Microsoft Entra ID i wybierz pozycję Aplikacje dla przedsiębiorstw.

  3. Wybierz pozycję Niestandardowe rozszerzenia uwierzytelniania, a następnie wybierz pozycję Utwórz rozszerzenie niestandardowe.

  4. W Podstawach wybierz typ zdarzenia EmailOtpSend, a następnie kliknij Dalej.

    Zrzut ekranu portalu Azure z wyróżnionym zdarzeniem wysyłania jednorazowego hasła OTP na e-mail.

  5. Na karcie Konfiguracja punktu końcowego wypełnij następujące właściwości, a następnie wybierz przycisk Dalej, aby kontynuować.

    • Nazwa — nazwa niestandardowego rozszerzenia uwierzytelniania. Na przykład wyślij wiadomość E-mail OTP.
    • Docelowy adres URL - {Function_Url} adres URL Twojej funkcji platformy Azure. Przejdź do strony Przegląd swojej aplikacji Azure Function, a następnie wybierz utworzoną funkcję. Na stronie Przegląd funkcji wybierz Pobierz adres URL funkcji i użyj ikony kopiowania, aby skopiować adres URL customauthenticationextension_extension (klucz systemowy).
    • Opis — opis niestandardowych rozszerzeń uwierzytelniania.
  6. Na karcie Uwierzytelnianie API wybierz opcję Utwórz nową rejestrację aplikacji, aby utworzyć rejestrację aplikacji reprezentującą aplikację funkcji.

  7. Nadaj aplikacji nazwę, na przykład API zdarzeń uwierzytelniania Azure Functions, a następnie wybierz pozycję Dalej.

  8. Na karcie Aplikacje wybierz aplikację do skojarzenia z niestandardowym rozszerzeniem uwierzytelniania. Wybierz Dalej. Możesz ją zastosować dla całej dzierżawy, zaznaczając pole wyboru. Wybierz przycisk Dalej, aby kontynuować.

  9. Na karcie Przegląd sprawdź, czy szczegóły są poprawne dla niestandardowego rozszerzenia uwierzytelniania. Zanotuj Identyfikator aplikacji w obszarze Uwierzytelnianie interfejsu API, który jest wymagany do skonfigurowania uwierzytelniania dla funkcji w aplikacji funkcji platformy Azure. Wybierz pozycję Utwórz.

Po utworzeniu niestandardowego rozszerzenia uwierzytelniania otwórz aplikację z portalu w obszarze Rejestracje aplikacji i wybierz pozycję Uprawnienia interfejsu API.

Na stronie uprawnień interfejsu API wybierz przycisk Udziel zgody administratora dla "YourTenant", aby wyrazić zgodę administratora na zarejestrowaną aplikację, co umożliwia niestandardowe rozszerzenie uwierzytelniania do korzystania z interfejsu API. Rozszerzenie uwierzytelniania niestandardowego używa client_credentials do uwierzytelniania w Azure Function App przy użyciu uprawnienia Receive custom authentication extension HTTP requests.

Poniższy zrzut ekranu przedstawia sposób udzielania uprawnień.

Zrzut ekranu przedstawiający witrynę Azure Portal i sposób udzielania zgody administratora.

Krok 4: Skonfiguruj aplikację OpenID Connect do testowania

Aby uzyskać token i przetestować niestandardowe rozszerzenie uwierzytelniania, możesz użyć https://jwt.ms aplikacji. Jest to aplikacja internetowa należąca do firmy Microsoft, która wyświetla zdekodowana zawartość tokenu (zawartość tokenu nigdy nie opuszcza przeglądarki).

Wykonaj następujące kroki, aby zarejestrować aplikację internetową jwt.ms :

4.1 Rejestrowanie testowej aplikacji internetowej

  1. Zaloguj się do centrum administracyjnego firmy Microsoft Entra co najmniej jako administrator aplikacji.
  2. Przejdź do Identity>Applications>Application registrations.
  3. Wybierz opcjęNowa rejestracja.
  4. Wprowadź nazwę aplikacji. Na przykład Moja aplikacja testowa.
  5. W obszarze Obsługiwane typy kont wybierz Konta w tym katalogu organizacyjnym wyłącznie.
  6. Na liście rozwijanej Wybierz platformę w Identyfikatorze URI przekierowania wybierz Sieć Web, a następnie wprowadź adres w polu tekstowym https://jwt.ms URL.
  7. Wybierz pozycję Zarejestruj, aby ukończyć rejestrację aplikacji.
  8. W rejestracji aplikacji w obszarze Przegląd skopiuj identyfikator aplikacji (klienta), który jest używany później i określany jako {App_to_sendotp_ID}. W Microsoft Graph właściwość appId nawiązuje do niej.

Poniższy zrzut ekranu przedstawia sposób rejestrowania aplikacji Mój test.

Zrzut ekranu przedstawiający sposób wyboru obsługiwanego typu konta oraz przekierowywanego URI.

4.1 Pobieranie identyfikatora aplikacji

W rejestracji aplikacji w obszarze Przegląd skopiuj identyfikator aplikacji (klienta). Identyfikator aplikacji jest określany jako {App_to_sendotp_ID} w kolejnych krokach. W usłudze Microsoft Graph jest to odwołane przez właściwość appId.

4.2 Włączanie przepływu niejawnego

Aplikacja testowa jwt.ms korzysta z przepływu niejawnego. Włącz niejawny przepływ w rejestracji aplikacji Mój test:

Ważny

Firma Microsoft zaleca korzystanie z najbezpieczniejszego dostępnego przepływu uwierzytelniania. Przepływ uwierzytelniania używany do testowania w tej procedurze wymaga bardzo wysokiego poziomu zaufania w aplikacji i niesie ze sobą ryzyko, które nie występują w innych przepływach. Takie podejście nie powinno być używane do uwierzytelniania użytkowników w aplikacjach produkcyjnych (dowiedz się więcej).

  1. W obszarze Zarządzanie wybierz pozycję Uwierzytelnianie.
  2. W obszarze Niejawne udzielanie i przepływy hybrydowe zaznacz pole wyboru Tokeny identyfikatorów (używane dla przepływów niejawnych i hybrydowych).
  3. Wybierz pozycję Zapisz.

Krok 5. Ochrona funkcji platformy Azure

Rozszerzenie niestandardowego uwierzytelniania Microsoft Entra używa przepływu między serwerami do uzyskania tokenu dostępu wysyłanego w nagłówku HTTP Authorization do funkcji Azure. Podczas publikowania funkcji na platformie Azure, zwłaszcza w środowisku produkcyjnym, należy zweryfikować token wysłany w nagłówku autoryzacji.

Aby chronić funkcję Azure, postępuj zgodnie z poniższymi krokami w celu zintegrowania uwierzytelniania Microsoft Entra, które pozwala na weryfikację przychodzących tokenów przy użyciu rejestracji aplikacji API zdarzeń uwierzytelniania Azure Functions.

Uwaga

pl-PL: Jeśli aplikacja funkcji platformy Azure jest hostowana w innej dzierżawie platformy Azure niż ta, w której zarejestrowano niestandardowe rozszerzenie uwierzytelniania, przejdź do kroku korzystając z dostawcy tożsamości OpenID Connect.

  1. Zaloguj się w witrynie Azure Portal.
  2. Przejdź do aplikacji funkcyjnej, którą wcześniej opublikowałeś, i ją wybierz.
  3. Wybierz pozycję Uwierzytelnianie w menu po lewej stronie.
  4. Wybierz Dodaj dostawcę tożsamości.
  5. Z menu rozwijanegoWybierz firmę Microsoft jako dostawcę tożsamości.
  6. W obszarze Rejestracja aplikacji - >Typ rejestracji aplikacji wybierz opcję Wybierz istniejącą rejestrację aplikacji w tym katalogu i wybierz utworzoną wcześniej rejestrację aplikacji interfejsu API zdarzeń uwierzytelniania usługi Azure Functions, podczas rejestrowania niestandardowego dostawcy poczty e-mail.
  7. Dodaj wygaśnięcie tajemnicy klienta dla aplikacji.
  8. W obszarze Żądania nieuwierzytelnione wybierz HTTP 401 Nieautoryzowany jako opcję dla dostawcy tożsamości.
  9. Usuń zaznaczenie opcji Magazyn tokenów.
  10. Wybierz pozycję Dodaj , aby dodać uwierzytelnianie do funkcji platformy Azure.

Zrzut ekranu przedstawiający sposób dodawania uwierzytelniania do aplikacji funkcji.

5.1 Używanie dostawcy tożsamości OpenID Connect

Jeśli skonfigurowano dostawcę tożsamości firmy Microsoft, pomiń ten krok. W przeciwnym razie, jeśli funkcja Azure jest hostowana w innym tenantcie niż ten, w którym zarejestrowano niestandardowe rozszerzenie uwierzytelniania, wykonaj następujące kroki, aby chronić swoją funkcję:

  1. Zaloguj się do portalu Azure, a następnie przejdź do app funkcji, którą opublikowałeś wcześniej.

  2. Wybierz pozycję Uwierzytelnianie w okienku po lewej stronie.

  3. Wybierz pozycję Dodaj dostawcę tożsamości.

  4. Wybierz OpenID Connect jako dostawcę tożsamości.

  5. Podaj nazwę, taką jak Contoso Microsoft Entra ID.

  6. Pod Wpisem Metadanych wprowadź następujący adres do adresu URL dokumentu. Zastąp element {tenantId} identyfikatorem lokatora Microsoft Entra, a {tenantname} nazwą lokatora bez 'onmicrosoft.com'.

    https://{tenantname}.ciamlogin.com/{tenantId}/v2.0/.well-known/openid-configuration
    
  7. Pod Rejestracją aplikacji wprowadź identyfikator aplikacji (identyfikator klienta) rejestracji aplikacji interfejsu API zdarzeń uwierzytelniania Azure Functionsutworzony wcześniej.

  8. W centrum administracyjnym Microsoft Entra:

    1. Wybierz rejestrację aplikacji API zdarzeń uwierzytelniania dla Azure Functions, którą utworzyłeś wcześniej.
    2. Wybierz Certyfikaty i tajne klucze>Tajne klucze klienta>Nowy tajny klucz klienta.
    3. Dodaj opis dla tajemnicy klienta.
    4. Wybierz datę wygaśnięcia klucza tajnego lub określ niestandardowy okres ważności.
    5. Wybierz Dodaj.
    6. Zapisz wartość sekretu do użycia w kodzie aplikacji klienckiej. Po opuszczeniu tej strony wartość tajna nigdy nie jest wyświetlana ponownie.
  9. Wróć do funkcji platformy Azure w obszarze Rejestracja aplikacji wprowadź klucz tajny klienta.

  10. Usuń zaznaczenie opcji Magazyn tokenów.

  11. Wybierz pozycję Dodaj , aby dodać dostawcę tożsamości OpenID Connect.

Krok 6. Testowanie aplikacji

Aby przetestować niestandardowego dostawcę poczty e-mail, wykonaj następujące kroki:

  1. Otwórz nową prywatną przeglądarkę i przejdź oraz zaloguj się za pomocą następującego adresu URL.

    https://{tenantname}.ciamlogin.com/{tenant-id}/oauth2/v2.0/authorize?client_id={App_to_sendotp_ID}&response_type=id_token&redirect_uri=https://jwt.ms&scope=openid&state=12345&nonce=12345
    
  2. Zastąp {tenant-id} swoim identyfikatorem dzierżawy, nazwą dzierżawy lub jednym ze zweryfikowanych nazw domen. Na przykład contoso.onmicrosoft.com.

  3. Zastąp {tenantname} nazwą dzierżawy bez "onmicrosoft.com".

  4. Zastąp element {App_to_sendotp_ID} identyfikatorem rejestracji aplikacji Moja testowa.

  5. Upewnij się, że logujesz się przy użyciu konta jednorazowego kodu dostępu poczty e-mail. Następnie wybierz pozycję Wyślij kod. Upewnij się, że kod wysłany na zarejestrowane adresy e-mail korzysta z niestandardowego dostawcy zarejestrowanego powyżej.

Krok 7. Powrót do dostawcy firmy Microsoft

Jeśli w interfejsie API rozszerzenia wystąpi błąd, domyślnie identyfikator Entra nie wyśle protokołu OTP do użytkownika. Możesz zamiast tego ustawić zachowanie w przypadku błędu, aby powrócić do dostawcy firmy Microsoft.

Aby to włączyć, uruchom następujące żądanie. Zastąp {customListenerObjectId} identyfikatorem niestandardowego odbiornika uwierzytelniania zarejestrowanym wcześniej.

  • Wymagane jest uprawnienie delegowane EventListener.ReadWrite.All .
PATCH https://graph.microsoft.com/beta/identity/authenticationEventListeners/{customListenerOjectId}

{
    "@odata.type": "#microsoft.graph.onEmailOtpSendListener",
    "handler": {
        "@odata.type": "#microsoft.graph.onOtpSendCustomExtensionHandler",
        "configuration": {
            "behaviorOnError": {
                "@odata.type": "#microsoft.graph.fallbackToMicrosoftProviderOnError"
            }
        }
    }
}

Zobacz też