Можно ли получить токен доступа через график Azure и использовать его для доступа к учетным записям хранения Azure? - PullRequest
0 голосов
/ 25 сентября 2019

Например, я могу аутентифицироваться через graph api с помощью getaccesstokencredentials (имя пользователя, пароль). Могу ли я использовать этот токен для доступа к Azure?В настоящее время мы можем использовать usertokencredentials и applicationtokencredentials из библиотеки управления, после чего вы можете создать экземпляр класса Azure.Azure azure = Azure.authenticate (учетные данные) .withdefaultsubscription.Мне интересно, можем ли мы использовать токен из getaccesstokencredentials вместо usertokentcredentials и applicationtokencredentials

1 Ответ

0 голосов
/ 26 сентября 2019

Мы не можем использовать один и тот же токен доступа для вызова графа api и вызова api для управления ресурсом Azure.Поскольку URL ресурса для API api равен https://graph.microsoft.com/, а URL ресурса для остальных API управления Azure равен https://management.azure.com/.Дополнительные сведения см. В https://docs.microsoft.com/en-us/azure/azure-resource-manager/resource-manager-api-authentication.

. Кроме того, в отношении того, как использовать Azure AD для доступа к хранилищу Azure, выполните следующие действия:

  1. Добавьте назначение роли в свойосновной.

enter image description here

Получить токен.

public static String getToken() throws Exception {
    String TENANT_ID = "your tenant id or name, e4c9*-*-*-*-*57fb";
    String AUTHORITY = "https://login.microsoftonline.com/" + TENANT_ID;
    String CLIENT_ID = "your application id, dc17*-*-*-*a5e7";
    String CLIENT_SECRET = "the secret, /pG*32";
    String RESOURCE = "https://storage.azure.com/";
    String ACCESS_TOKEN = null;
    ExecutorService service = Executors.newFixedThreadPool(1);
    AuthenticationContext context = null;
    try {
        context = new AuthenticationContext(AUTHORITY, false, service);
        ClientCredential credential = new ClientCredential(CLIENT_ID, CLIENT_SECRET);
        Future<AuthenticationResult> future = context.acquireToken(RESOURCE, credential, null);
        ACCESS_TOKEN = future.get().getAccessToken();
    } catch (InterruptedException e) {
        e.printStackTrace();
    } catch (ExecutionException e) {
        e.printStackTrace();
    } catch (MalformedURLException e) {
        e.printStackTrace();
    } finally {
        service.shutdown();
    }
    return ACCESS_TOKEN;
}

Блок доступа.

public static void main(String[] args) throws Exception {
    String token = getToken();
    StorageCredentialsToken credentialsToken = new StorageCredentialsToken("storagetest789", token);
    CloudBlobClient blobClient = new CloudBlobClient(new URI("https://storagetest789.blob.core.windows.net/"), credentialsToken);
    CloudBlobContainer blobContainer = blobClient.getContainerReference("pub");
    CloudBlockBlob blockBlob = blobContainer.getBlockBlobReference("test1.txt");
    blockBlob.uploadText("mytest");
}

Подробнее см. https://docs.microsoft.com/en-us/azure/storage/common/storage-auth-aad.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...