Примечание: я использую экспериментальную предварительную версию последней версии adal от Microsoft.
Я пытаюсь заставить моих поставщиков удостоверений работать с мобильными приложениями. До сих пор мне удалось загрузить своих поставщиков удостоверений и показать страницу входа в систему (кроме facebook).
Проблема в том, что всякий раз, когда я действительно пытаюсь войти в систему, я получаю некоторую ошибку в форме «недопустимый uri перенаправления».
Google, например, скажет: "URI перенаправления в запросе: https://login.microsoftonline.com/ ... не соответствует зарегистрированному URI перенаправления.
Facebook покажет: «Данный URL-адрес не разрешен конфигурацией приложения: один или несколько указанных URL-адресов не разрешены настройками приложения. Он должен соответствовать URL-адресу веб-сайта или URL-адресу Canvas, либо домен должен быть поддоменом одного из домены приложения ".
Насколько я понимаю, вам больше не нужно регистрировать мобильное приложение у разных поставщиков удостоверений, потому что 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, что мне не хватает? Почему говорится, что URL-адрес перенаправления недействителен, если он зарегистрирован на веб-портале Azure? И если URI перенаправления недействителен, почему я вообще могу получить поставщиков удостоверений?