Search code examples
angularjsadal

ADAL and angularjs WITHOUT .NET generates HTTP 404


I have been trying to integrate ADAL into my AngularJS SPA app by leveraging the AAD application configuration info from the .NET sample app and cannot get it to authenticate. I get a 404 every time.

The sample app instructions are as follows:

    Step 2: Register the sample with your Azure Active Directory tenant

    Sign in to the Azure management portal.
    Click on Active Directory in the left hand nav.
    Click the directory tenant where you wish to register the sample application.
    Click the Applications tab.
    In the drawer, click Add.
    Click "Add an application my organization is developing".
    Enter a friendly name for the application, for example "SinglePageApp-DotNet", select "Web Application and/or Web API", and click next.
    For the sign-on URL, enter the base URL for the sample, which is by default https://localhost:44326/.
    For the App ID URI, enter https://<your_tenant_name>/SinglePageApp-DotNet, replacing <your_tenant_name> with the name of your Azure AD tenant.
    All done! Before moving on to the next step, you need to find the Client ID of your application.

    While still in the Azure portal, click the Configure tab of your application.
    Find the Client ID value and copy it to the clipboard.
    Step 3: Enable the OAuth2 implicit grant for your application

    By default, applications provisioned in Azure AD are not enabled to use the OAuth2 implicit grant. In order to run this sample, you need to explicitly opt in.

    From the former steps, your browser should still be on the Azure management portal - and specifically, displaying the Configure tab of your application's entry.
    Using the Manage Manifest button in the drawer, download the manifest file for the application and save it to disk.
    Open the manifest file with a text editor. Search for the oauth2AllowImplicitFlow property. You will find that it is set to false; change it to true and save the file.
    Using the Manage Manifest button, upload the updated manifest file. Save the configuration of the app.
    Step 4: Configure the sample to use your Azure Active Directory tenant

    Open the solution in Visual Studio 2013.
    Open the web.config file.
    Find the app key ida:Tenant and replace the value with your AAD tenant name.
    Find the app key ida:Audience and replace the value with the Client ID from the Azure portal.
    Open the file App/Scripts/App.js and locate the line adalAuthenticationServiceProvider.init(.
    Replace the value of tenant with your AAD tenant name.
    Replace the value of clientId with the Client ID from the Azure portal.

When I configure my app it looks like this:

adalProvider.init(
{
    instance: 'https://login.microsoftonline.com/',
    tenant: 'http://mytenantname.onmicrosoft.com',
    clientId: '000000000-583f-4218-b410-28c2acf00000',
    extraQueryParameter: '12345',
},
$httpProvider
);

However, when I try to authenticate I always get a 404 response that my app is not recognized. Any idea what is wrong here?


Solution

  • The problems are in the tenant value:

    1. The tenant property needs to be a URN, not a URL, so it should not include the 'http://'.
    2. You have to include the application name at the end of the URN to uniquely identify the application within the directory.

    Try that and see if it works.