Мисс динамика веб-API 401 Неавторизованный

У меня есть учетная запись msdynamics crm trail, я регистрирую свою Crm в Azure Active Directory как web app/api и URL как http://localhost, и я дал разрешение для Dynamic CRM online в качестве проверки делегированного разрешения.

Ниже приведен код, который я использую для получения access_token.

private static AuthenticationResult getAccessTokenFromUserCredentials() throws Exception {
    AuthenticationContext context = null;
    AuthenticationResult result = null;
    ExecutorService service = null;
    try {
        service = Executors.newFixedThreadPool(1);
        context = new AuthenticationContext(AUTHORITY, false, service);
        /*
         * Replace {client_id} with ApplicationID and {password} with
         * password that were used to create Service Principal above.
         */
        ClientCredential credential = new ClientCredential(CLIENT_ID,CLIENT_SECRET);

        Future<AuthenticationResult> future = context.acquireToken("https://XXXXXXXX.api.crm8.dynamics.com",
                credential, null);
        result = future.get();
    } finally {
        service.shutdown();
    }
    if (result == null) {
        throw new ServiceUnavailableException("authentication result was null");
    }
    return result;
}

Теперь я получаю access_token и код, который использую для загрузки потенциальных клиентов.

 URL url = new URL(RESOURCE + "/api/data/v8.0/opportunities?$select=name,&$expand=parentcontactid($select=contactid,firstname,lastname,jobtitle,company,emailaddress1,telephone1,telephone2)&$filter=statecode%20eq%200");
        connection = (HttpURLConnection) url.openConnection();
        connection.setRequestMethod("GET");
        connection.setRequestProperty("Authorization", "Bearer " + token);
        connection.setRequestProperty("Content-Type", "application/json; charset=utf-8");
        connection.setRequestProperty("OData-MaxVersion", "4.0");
        connection.addRequestProperty("OData-Version", "4.0");


        int responseCode = connection.getResponseCode();
        System.out.println("res code : "+ responseCode);

        BufferedReader in = new BufferedReader(
                new InputStreamReader(connection.getInputStream()));
        String inputLine;
        StringBuffer response = new StringBuffer();

        while ((inputLine = in.readLine()) != null) {
            response.append(inputLine);
        }
        in.close();

Но я получаю код ответа 401 Unauthorized. Кто-нибудь может мне помочь, пожалуйста?


person Jagan    schedule 29.03.2017    source источник
comment
WebAPI действительно предназначен для использования внутри CRM. Снаружи вам лучше использовать Xrm.Tooling.Connector (ex-Xrm.Client)   -  person Alex    schedule 29.03.2017
comment
Но мне нужно подключить его через rest API, я не должен использовать конечную точку мыла. Я разрешил это использование, назначив роль и добавив этот идентификатор клиента AAD пользователю приложения CRM. Но теперь задача заключается в том, что я не должен использовать Azure ClientID и ClientSecret, а использовать учетные данные CRM (имя пользователя/пароль) для подключения к CRM. Любая помощь будет оценена.   -  person Jagan    schedule 30.03.2017