注意:我正在使用微软最新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无效,为什么我可以首先检索身份提供者?
答案 0 :(得分:1)
为什么我几乎无法在搜索后找到解决方案,但当我在这里发布一个问题时,我会在几分钟内找到答案......
这是一个非常愚蠢的错误,我的一个同事给了我错误的权威网址。 有趣的是,正确“足够”加载我们在门户网站上安装的身份提供程序,但不够正确,无法处理实际登录或登记。
我最初使用过:
https://login.microsoftonline.com/<tenant_id>/oauth2/authorize/
应该是:
https://login.microsoftonline.com/<tenant_id>/oauth2/v2.0/authorize
你看到那个小“v2.0”?是的那个小混蛋是造成所有痛苦的原因......