ADAL 无效的重定向 uri

ADAL invalid redirect uri

注意:我使用的是 Microsoft 最新 adal 的实验性预发布版

我正在尝试让我的身份提供者在移动应用程序上工作。到目前为止,我已经能够加载我的身份提供者并设法显示登录页面(facebook 除外)。

问题是,每当我实际尝试登录时,我都会收到一些表单错误 "invalid redirect uri"。

例如,

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

Facebook 将显示:"Given URL is not allowed by the application configuration: One or more of the given URLs is not allowed by the App's settings. It must match the website URL or Canvas URL, or the domain must be a subdomain of one of the App's domains."

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

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

这是我用来实际执行 login/signup:

的代码
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);            

    }

Microsoft 的文档并没有真正帮助,因为大多数文档要么是空的(实际上还没有输入),要么是一年多前的一些帮助主题。这些东西很新,所以文档似乎很难找到。

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

为什么我搜索了几个小时后似乎找不到解决方案,但是当我 post 在这里提出一个问题时,我不知何故在几分钟内就找到了答案...

这是一个非常愚蠢的错误,我的一位同事向我发送了错误的权限 url。 有趣的是,加载我们在门户上安装的身份提供程序是正确的 "enough",但不够正确以处理实际登录或注册。

我最初使用:

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

它应该在的地方:

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

你看到那个小东西了吗"v2.0"?是的,那个小混蛋是造成所有痛苦的原因...