【发布时间】:2016-01-20 13:45:12
【问题描述】:
注意:我正在使用微软最新 adal 的实验性预发布版
我正试图让我的身份提供者在移动应用程序上工作。到目前为止,我已经能够加载我的身份提供者并设法显示登录页面(facebook 除外)。
问题是,每当我实际尝试登录时,我都会在“无效的重定向 uri”表单中收到一些错误。
例如,Google 会说:“请求中的重定向 URI:https://login.microsoftonline.com/... 与注册的重定向 URI 不匹配。
Facebook 将显示:“应用程序配置不允许给定 URL:应用程序的设置不允许一个或多个给定 URL。它必须与网站 URL 或 Canvas URL 匹配,或者域必须是子域应用程序的域之一。”
据我了解,您实际上不再需要向不同的身份提供商注册移动应用程序,因为 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);
}
Microsoft 的文档并没有真正的帮助,因为大多数文档要么是空的(实际上还没有输入),要么是一年多前的一些帮助主题。这些东西很新,所以文档似乎很难找到。
那么,亲爱的 stackoverflow 人,我错过了什么?为什么在azure门户网站上注册重定向url无效?如果重定向 URI 无效,为什么我首先要检索身份提供者?
【问题讨论】:
标签: xamarin azure-active-directory adal