Microsoft.Azure.Management.ApiManagement Реализация - PullRequest
0 голосов
/ 31 августа 2018

Я пытаюсь реализовать API управления API Azure, используя Microsoft.Azure.Management.ApiManagement 4.0.4-preview.

Нет, где я вижу документацию для реализации. Я попробовал ниже код. но я получаю ошибку аутентификации.

Microsoft.Rest.Azure.CloudException: «Ошибка аутентификации. Заголовок «Авторизация» указан в неверном формате. '

BasicAuthenticationCredentials basicAuthenticationCredentials = new BasicAuthenticationCredentials();
basicAuthenticationCredentials.UserName = "**********";
basicAuthenticationCredentials.Password = "*******";

var token = "Bearer **********"; // copied bear token from https://docs.microsoft.com/en-us/rest/api/apimanagement/user/get by logging proper user name and password

 ApiManagementClient apiManagementClient = new ApiManagementClient(basicAuthenticationCredentials);
 apiManagementClient.SubscriptionId = "*************************************";           
 apiManagementClient.HttpClient.DefaultRequestHeaders.TryAddWithoutValidation("Authorization", token);
 apiManagementClient.ApiManagementService.Get("resourcegroupname", "POCAPIManagementService"); // error happening from this line

 var user = apiManagementClient.User.Get("resourcegroupname", "POCAPIManagementService", "1");

Ответы [ 2 ]

0 голосов
/ 07 сентября 2018

После двух недель борьбы мы нашли путь к Microsoft.Azure.Management.ApiManagement Реализация dll.

1) Создайте приложение внутри лазурной рекламы 2) Перейдите на вкладку APIM => Контроль доступа (IAM) 3) Добавьте созданное выше приложение (для этого требуется разрешение в APIM) 4) Теперь вы должны увидеть приложение Azure AD на вкладке управления доступом (IAM) APIM

Это предоставит делегированное разрешение для вашего приложения, созданного в Azure AD

Мы можем использовать поток учетных данных клиента, чтобы получить токен делегированного доступа для Azure AD. Используйте область как https://management.azure.com

Ниже приведен пример кода для реализации потока учетных данных клиента для Microsoft.Azure.Management.ApiManagement dll.

public class myServiceCredentials : ServiceClientCredentials{
private string AuthenticationToken { get; set; }
public override void InitializeServiceClient<T>(ServiceClient<T> client)
    {
        var authenticationContext = new 
   AuthenticationContext("https://login.windows.net/{tenantID}");
        var credential = new ClientCredential(clientId: "xxxxx-xxxx-xx-xxxx-xxx", 
  clientSecret: "{clientSecret}");
        var result = authenticationContext.AcquireToken(resource: 
        "https://management.core.windows.net/", clientCredential: credential);

        if (result == null)
        {
            throw new InvalidOperationException("Failed to obtain the JWT token");
        }
        AuthenticationToken = result.AccessToken;
    }
}

Спасибо https://github.com/Azure/azure-sdk-for-net/issues/4727

0 голосов
/ 31 августа 2018

скопировал медвежий токен из https://docs.microsoft.com/en-us/rest/api/apimanagement/user/get, указав правильное имя пользователя и пароль

Кажется, что с вашим генерацией что-то не так.

Заголовок авторизации должен быть веб-токеном JSON, полученным из Azure Active Directory, но непосредственно из портала Azure. Для более подробной информации, вы можете обратиться к этой статье .

Вы можете обратиться к этому документу , чтобы узнать, как получить JWT из AAD и защитить API с помощью OAuth 2.0 с Azure Active Directory и управлением API.

...