Доступ к защищенному веб-интерфейсу Azure AD в Android - PullRequest
0 голосов
/ 30 мая 2019

Я создаю приложение Android, которое использует Azure AD для аутентификации.Мне нужно получить доступ к некоторым WebAPI на сервере Azure, который защищен с помощью аутентификации Azure AD.Я могу сгенерировать токен.Когда я пытаюсь получить доступ к WebAPI, он выдает 401 несанкционированную ошибку.

   private void azureADLogin(){
    mAuthContext = new AuthenticationContext(getApplicationContext(), AUTHORITY, false);

    /* Instantiate handler which can invoke interactive sign-in to get the Resource
     * sIntSignInInvoked ensures interactive sign-in is invoked one at a time */
    mAcquireTokenHandler = new Handler(Looper.getMainLooper()){
        @Override
        public void handleMessage(Message msg) {
            if( sIntSignInInvoked.compareAndSet(false, true)) {
                if (msg.what == MSG_INTERACTIVE_SIGN_IN_PROMPT_AUTO){
                    mAuthContext.acquireToken(MainActivity.this, RESOURCE_ID, CLIENT_ID, REDIRECT_URI, PromptBehavior.Auto, getAuthInteractiveCallback());
                }else if(msg.what == MSG_INTERACTIVE_SIGN_IN_PROMPT_ALWAYS){
                    mAuthContext.acquireToken(MainActivity.this, RESOURCE_ID, CLIENT_ID, REDIRECT_URI, PromptBehavior.Always, getAuthInteractiveCallback());
                }
            }
        }
    };

    /* ADAL Logging callback setup */
    Logger.getInstance().setExternalLogger(new Logger.ILogger() {
        @Override
        public void Log(String tag, String message, String additionalMessage, Logger.LogLevel level, ADALError errorCode) {
            // You can filter the logs  depending on level or errorcode.
            Log.d(Constants.TAG, message + " " + additionalMessage);
        }
    });

    /*Attempt an acquireTokenSilent call to see if we're signed in*/
    SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
    String userId = preferences.getString(USER_ID, "");
    if(!TextUtils.isEmpty(userId)){
        mAuthContext.acquireTokenSilentAsync(RESOURCE_ID, CLIENT_ID, userId, getAuthSilentCallback());
    }else {
        mAcquireTokenHandler.sendEmptyMessage(MSG_INTERACTIVE_SIGN_IN_PROMPT_ALWAYS);
    }
} // end of azure AD Login
...