with usuario tipos por para autenticacion python powershell azure oauth-2.0

python - tipos - Graph API autenticarse como usuario mediante programación



token para api (2)

Estoy tratando de obtener un token de portador de OAuth2 de usuario específico utilizando la solicitud HTTP POST, y nada parece funcionar.

login_url = ''https://login.microsoftonline.com/'' authorize_endpoint = ''{0}{1}{2}''.format(login_url,config.tenant_id,''/oauth2/authorize'') bodyvals = {''client_id'': config.client_id, ''client_secret'': config.client_secret, ''grant_type'': ''client_credentials'', ''resource'':config.resource_endpoint} return requests.post(authorize_endpoint, data=bodyvals)

El código anterior funciona, pero genera un token en nombre de la aplicación.
Parece que no puedo encontrar una manera de pasar las credenciales de los usuarios, y no hay documentación sobre esto en absoluto.

En general, no me importa si la respuesta está en Python o Powershell o simplemente en una explicación general, simplemente no parece entender cómo hacer eso correctamente con AAD.


Para GraphAPI, el recurso es " https://graph.windows.net/ "

Si no quieres usar ADAL , puedes echarle un vistazo al código para usar el "recurso". Este escenario está cubierto, así que considere ADAL como una gran muestra :)

Además, msrestazure tiene una instancia UserPassCredentials que también funciona en GraphAPI.


Puede hacerlo manualmente, vea mi otra respuesta aquí: https://.com/a/40844983/1658906 .

Debe usar grant_type=password y llamar al punto final oauth2/token . Aquí está la versión de C # para la autenticación:

private async Task<string> GetAccessToken() { string tokenEndpointUri = Authority + "oauth2/token"; var content = new FormUrlEncodedContent(new [] { new KeyValuePair<string, string>("grant_type", "password"), new KeyValuePair<string, string>("username", Username), new KeyValuePair<string, string>("password", Password), new KeyValuePair<string, string>("client_id", ClientId), new KeyValuePair<string, string>("client_secret", ClientSecret), new KeyValuePair<string, string>("resource", PowerBiResourceUri) } ); using (var client = new HttpClient()) { HttpResponseMessage res = await client.PostAsync(tokenEndpointUri, content); string json = await res.Content.ReadAsStringAsync(); AzureAdTokenResponse tokenRes = JsonConvert.DeserializeObject<AzureAdTokenResponse>(json); return tokenRes.AccessToken; } }

En la solicitud debe especificar:

  1. Nombre de usuario
  2. Contraseña
  3. Identificación del cliente
  4. Secreto del cliente
  5. El URI de recursos