Мы не можем использовать один и тот же токен доступа для вызова графа 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, выполните следующие действия:
- Добавьте назначение роли в свойосновной.
![enter image description here](https://i.stack.imgur.com/DHmTK.png)
Получить токен.
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.