Получите токен от Azure с помощью приложения AAD (ClientID, TenantID, Cert-Thumbprint) - PullRequest
1 голос
/ 20 июня 2020

У меня есть способ получить токен из Azure с использованием ClientID , TenantID и AADAppPassword

Это отлично работает, но теперь мне нужно переключиться на другой AAD AppID и использовать отпечаток сертификата или сертификат pfx . Я не хочу менять свои 1000+ строк кода.

Может ли кто-нибудь помочь мне получить токен так же, как я использую метод ниже, но вместо этого используйте отпечаток сертификата , который возвращает токен , чтобы я мог вызвать прямо перед вызовом rest API.

public static async Task<string> GetAccessToken(string tenantId, string clientId, string clientKey)
        {
            string authContextURL = "https://login.windows.net/" + tenantId;
            var authenticationContext = new AuthenticationContext(authContextURL);
            var credential = new ClientCredential(clientId, clientKey);
            var result = await authenticationContext

            .AcquireTokenAsync("https://management.azure.com/", credential);
            if (result == null)
            {
                throw new InvalidOperationException("Failed to obtain the JWT token");
            }
            string token = result.AccessToken;
            return token;
    }

1 Ответ

1 голос
/ 24 июня 2020

Вы должны использовать ClientAssertionCertificate вместо ClientCredential

X509Certificate2 cert = ReadCertificateFromStore(config.CertName);
certCred = new ClientAssertionCertificate(config.ClientId, cert);
result = await authContext.AcquireTokenAsync(todoListResourceId, certCred);

Для этого вы можете обратиться к Azure AD v1 Sample .

MSAL. NET теперь является рекомендуемой библиотекой аутентификации для использования с платформой идентификации Microsoft. В ADAL не будет реализовано никаких новых функций. NET. Усилия сосредоточены на улучшении MSAL. Вы можете обратиться к документации здесь, если вы планируете переносить приложения на MSAL. NET

...