TechGuru
TechGuru

Reputation: 439

You do not have permission to view this directory or page unauthorized 401

I have a web app running in Azure which has azure Active Directory authentication enabled. This is given below (I have configured this correctly there is no issue with this): -

enter image description here

Now I want to call one of the API of this web app. Code for getting access token based on the client credentials: -

public static string GetAccessToken()
        {
            string authContextURL = "https://login.microsoftonline.com/" + "TENANT_ID";
            var authenticationContext = new AuthenticationContext(authContextURL);
            var credential = new ClientCredential("CLIENT_ID", "CLIENT_SECRET");
            var result = authenticationContext.AcquireTokenAsync("URL_FOR_MY_WEBAPP", credential).Result;

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

            string token = result.AccessToken;
            return token;
        }

Code for calling the desired API: -

private static string GET(string URI, string token)
        {
            Uri uri = new Uri(string.Format(URI));

            // Create the request
            var httpWebRequest = (HttpWebRequest)WebRequest.Create(uri);
            httpWebRequest.Headers.Add(HttpRequestHeader.Authorization, "Bearer " + token);
            httpWebRequest.ContentType = "application/json";
            httpWebRequest.Method = "GET";

            // Get the response
            HttpWebResponse httpResponse;
            try
            {
                httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
            }
            catch (Exception ex)
            {
                return ex.Message;
            }

            string result = null;
            using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
            {
                result = streamReader.ReadToEnd();
            }

            return result;
        }

I am getting an unauthorized error while getting the response. Could anyone tell what is wrong here? The same service principal is working with graph client. Any help or suggestion will be appreciated.

Upvotes: 0

Views: 259

Answers (1)

Tony Ju
Tony Ju

Reputation: 15609

The resource to acquire access token is not correct. You should use the same client id of your AD app.

var result = authenticationContext.AcquireTokenAsync("{CLIENT_ID}", credential).Result;

Upvotes: 1

Related Questions