Xamarin:在没有 azure 的情况下创建 ADFS (Oauth2) 客户端

Xamarin: Creating ADFS (Oauth2) client without azure

我正在尝试使用 ADFS 和 oauth2 对我的应用程序进行身份验证。我找到了很多文档来使用 azure 服务(使用 ADAL)来执行此操作。但是没有关于如何使用本地服务器执行此操作的信息。

我使用 angular 应用程序测试了以下所有信息,并且身份验证有效!

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;
        }
    }
}

这是我得到的错误,但在 angular 中,这个 url: https://claim.mycompany.be/ 工作得很好。

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

有很好的参考资料 here 但请注意,您需要 ADFS 4.0 才能执行此操作。

对于 ADFS 3.0。你的选择是有限的。很好的概述 here