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"?是的,那个小混蛋是造成所有痛苦的原因...
注意:我使用的是 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"?是的,那个小混蛋是造成所有痛苦的原因...