Недопустимый URI перенаправления ADAL

Примечание: я использую экспериментальную предварительную версию последней версии 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 перенаправления недействителен, почему я вообще могу получить поставщиков удостоверений?


person killernerd    schedule 21.10.2015    source источник


Ответы (1)


почему я не могу найти решения после нескольких часов поиска, но когда я публикую здесь вопрос, я каким-то образом нахожу ответ в течение нескольких минут ...

Это была довольно глупая ошибка, один из моих коллег прислал мне неправильный URL-адрес. Забавно то, что он был правильным «достаточно» для загрузки поставщиков удостоверений, которые мы установили на портале, но недостаточно правильным, чтобы обрабатывать фактический вход в систему или вход в систему.

Изначально я использовал:

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

где это должно было быть:

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

Вы видите эту маленькую "v2.0"? да, этот маленький ублюдок причинил всю боль ...

person killernerd    schedule 21.10.2015
comment
Просто начинаю то же самое упражнение. Хорошо знать, что нужно остерегаться. - person Rajesh; 21.10.2015