Проверка подлинности Python AAD (Azure Active Directory) с использованием сертификата - PullRequest
0 голосов
/ 06 июня 2018

Я пытаюсь получить токен доступа, аутентифицируя мое приложение с помощью AAD через сертификат.Сертификат установлен на моем локальном компьютере (Windows 10).Эта аутентификация необходима для доступа к внешнему API.

Я следую инструкциям, опубликованным в Документах Azure

Пример кода:

def authenticate_client_cert():
    """
    Authenticate using service principal w/ cert.
    """
    authority_host_uri = 'https://login.microsoftonline.com'
    tenant = '<TENANT>'
    authority_uri = authority_host_uri + '/' + tenant
    resource_uri = 'https://management.core.windows.net/'
    client_id = '<CLIENT_ID>'
    client_cert = '<CLIENT_CERT>' ### MISSING THIS
    client_cert_thumbprint = '<CLIENT_CERT_THUMBPRINT>'

    context = adal.AuthenticationContext(authority_uri, api_version=None)

    mgmt_token = context.acquire_token_with_client_certificate(resource_uri, client_id, client_cert, client_cert_thumbprint)
    credentials = AADTokenCredentials(mgmt_token, client_id)

    return credentials

У меня есть '<CLIENT_ID>', '<TENANT>' и '<CLIENT_CERT_THUMBPRINT>' , но мне не хватает '<CLIENT_CERT>'

Насколько я понимаю, '<CLIENT_CERT>' - это закрытый ключ, но я не могу экспортировать приватныйключ, потому что он не разрешен.

Поэтому я не уверен, как я могу пройти проверку подлинности из AAD с помощью этого сертификата.

1 Ответ

0 голосов
/ 06 июня 2018

Если вы не можете получить закрытый ключ, вы не будете использовать этот сертификат для аутентификации в AAD.Но Вы можете загрузить новый сертификат самостоятельно и использовать его.

<client_cert> должно быть Имя файла ключа , который вы создали.

Вотдокументация о учетные данные клиента с сертификатом в ADAL для python :

Шаги для создания сертификата и личного ключа, которые будут использоваться при реализации потока учетных данных клиента, таковыследующим образом:

Генерация ключа:

openssl genrsa -out server.pem 2048

Создание запроса на сертификат:

openssl req -new -key server.pem -out server.csr

Создание сертификата:

openssl x509 -req -days 365 -in server.csr -signkey server.pem -out server.crt

Вы должны загрузить этот сертификат (server.crt) на портал Azure в настройках своего приложения.Как только вы сохраните этот сертификат, портал предоставит вам отпечаток этого сертификата, который необходим при вызове токена получения.Ключом будет ключ server.pem, который вы сгенерировали на первом шаге.

Теперь вы можете создать учетные данные для потока учетных данных клиента, используя сертификат в ADAL Python, следующим образом:

client_credentials = {
    "client_id": <your app id>,
    "thumbprint": <thumbprint of cert file>,
    "certificate": <key file name> 
 }

Например:

 {
   "resource": "your_resource",
   "tenant" : "test.onmicrosoft.com",
   "authorityHostUrl" : "https://login.microsoftonline.com",
   "clientId" : "d6835713-b745-48d1-bb62-7a8248477d35",
   "thumbprint" : 'C15DEA8656ADDF67BE8031D85EBDDC5AD6C436E1',
   "certificate" : 'server.pem'
 }

Надеюсь, это поможет!

...