Xamarin: Creating ADFS (Oauth2) client without azure

762 views Asked by At

I am trying to authenticate my app using ADFS and oauth2. I found a lot of documentation to do this with an azure service (using ADAL). But there is no info about how to do it with a local server.

I tested all the info below with an angular app and the authentication works!

public class AuthenticationService
{
    public static string clientId = "uri:tst-amdm-website.mycompany.be";
    private static string commonAuthority = "https://claim.mycompany.be/";
    public static Uri returnUri = new Uri("http://www.google.be");
    const string graphResourceUri = "uri:tst-amdm-api.mycompany.be";

    public async void GetAccessToken(IPlatformParameters platformParameters)
    {
        AuthenticationResult authResult = null; 
        JObject jResult = null;
        //List<User> results = new List<User>();

        try
        {
            AuthenticationContext authContext = new AuthenticationContext(commonAuthority);
            if (authContext.TokenCache.ReadItems().Any())
                authContext = new AuthenticationContext(authContext.TokenCache.ReadItems().First().Authority);
            authResult = await authContext.AcquireTokenAsync(graphResourceUri, clientId, returnUri, platformParameters);
            var test = authResult.AccessToken;
        }
        catch (Exception ee)
        {   
            //results.Add(new User { error = ee.Message });
            //return results;
        }
    }
}

This is the error I get, but in angular this url: https://claim.mycompany.be/ works perfectly.

'authority' Uri should have at least one segment in the path (i.e.    https://<host>/<path>/...)
1

There are 1 answers

0
rbrayb On BEST ANSWER

There's good references here but note that you need ADFS 4.0 to do this.

For ADFS 3.0. your choices are limited. Good overview here.