ADAL无效重定向uri

时间:2015-10-21 14:00:20

标签: xamarin azure-active-directory adal

注意:我正在使用微软最新adal的实验性预发布

我试图让我的身份提供商处理移动应用程序。到目前为止,我已经能够加载我的身份提供商并设法获得显示的登录页面(除了facebook)。

问题在于,无论何时我实际尝试登录,我都会在表单中出现错误,并且#34;无效重定向uri"。

例如,Google会说:"请求中的重定向URI:https://login.microsoftonline.com/ ...与注册的重定向URI不匹配。

Facebook将显示:"应用程序配置不允许使用URL:应用程序设置不允许使用一个或多个给定的URL。它必须与网站URL或Canvas URL匹配,或者域必须是App域之一的子域。"

据我了解,您实际上不再需要向不同的身份提供商注册移动应用程序,因为Azure位于您和他们之间。 Azure处理连接,获取令牌并使用它来识别您的身份。然后它应该返回一组" azure标记"给你。

据我所知,使用的重定向URI已在门户网站上注册,因为我能够首先加载身份提供商? 更不用说它似乎是许多应用程序使用的默认URL:urn:ietf:wg:oauth:2.0:oob只是告诉它将其返回到某些基于浏览器的非应用程序?

这是我用来实际登录/注册的代码:

private static String AUTHORITY_URL = "https://login.microsoftonline.com/<directory>/oauth2/authorize/";
    private static String CLIENT_ID = "my_client_id";
    private static String[] SCOPES = { "my_client_id" };
    private static String[] ADDITIONAL_SCOPES = { "" };
 private static String REDIRECT_URL = "urn:ietf:wg:oauth:2.0:oob";
    private static String CORRELATION_ID = "";
    private static String USER_HINT = "";
    private static String EXTRA_QP = "nux=1";
    private static String FB_POLICY = "B2C_1_<your policy>";
    private static String EMAIL_SIGNIN_POLICY = "B2C_1_SignIn";
    private static String EMAIL_SIGNUP_POLICY = "B2C_1_SignUp";

public async Task<AuthenticationResult> Login(IPlatformParameters parameters, bool isSignIn)
    {
        var authContext = new AuthenticationContext(AUTHORITY_URL, new TokenCache());

        if (CORRELATION_ID != null &&
                CORRELATION_ID.Trim().Length != 0)
        {
            authContext.CorrelationId = Guid.Parse(CORRELATION_ID);
        }

        String policy = "";
        if (isSignIn)
            policy = EMAIL_SIGNIN_POLICY;
        else
            policy = EMAIL_SIGNUP_POLICY;

        return await authContext.AcquireTokenAsync(SCOPES, ADDITIONAL_SCOPES, CLIENT_ID, new Uri(REDIRECT_URL), parameters, UserIdentifier.AnyUser, EXTRA_QP, policy);            

    }
微软的文档并没有真正帮助,因为大多数文件都是空的(它们实际上还没有输入)或者它是一年多前的一些帮助主题。这个东西很新,所以文档似乎很难得到。

所以,亲爱的stackoverflow人,我错过了什么?为什么说重定向urI在天蓝门户网站上注册时无效?如果重定向URI无效,为什么我可以首先检索身份提供者?

1 个答案:

答案 0 :(得分:1)

为什么我几乎无法在搜索后找到解决方案,但当我在这里发布一个问题时,我会在几分钟内找到答案......

这是一个非常愚蠢的错误,我的一个同事给了我错误的权威网址。 有趣的是,正确“足够”加载我们在门户网站上安装的身份提供程序,但不够正确,无法处理实际登录或登记。

我最初使用过:

https://login.microsoftonline.com/<tenant_id>/oauth2/authorize/

应该是:

https://login.microsoftonline.com/<tenant_id>/oauth2/v2.0/authorize

你看到那个小“v2.0”?是的那个小混蛋是造成所有痛苦的原因......