Auth0 Swift SDK .authentication (). Логин, возвращающий неверный токен - PullRequest
0 голосов
/ 10 сентября 2018

Недавно я начал новый проект, использующий Auth0, в котором я добавляю приложение iOS в существующий проект веб-приложения.Веб-приложение использует приложение Auth0 для компьютера, и мы добавили собственное приложение Auth0 для обработки аутентификации iOS.

Все работает как положено, если я использую вызов .webauth ().Webauth возвращает действительный токен, и через контрольные точки я проследил за кодом, чтобы убедиться, что он проходит процесс PKCE.

Вопрос, который меня интересует, заключается в том, возможно ли использовать Swift SDK и .authentication () .login, чтобы получить действительный токен, чтобы я мог создать пользовательскую страницу входа.Требования дизайнеров таковы, что нам нужен именно заказ.

В настоящее время, если я просто использую вызов .authentication (). Login, он возвращает неверный токен.Я вижу, что этот поток не следует протоколу PKCE и возвращает токен, заголовок которого говорит, что он подписан с RS256, когда в действительности он подписан с HS256.

Я вижу, где я могу реализовать аутентификацию PKCE с помощью вызовов RESTful(и используя веб-просмотр ...), но я думаю, что это было бы возможно с предоставленным быстрым SDK.Будем благодарны за любые подсказки или помощь.

Использование Auth0.Swift 1.2.2, Xcode 10 beta, ios 11, swift 4.

Вызов webauth:

Auth0
   .webAuth()
   .connection("MY-CONNECTION)
   .audience("https://myapp.auth0.com/userinfo")
   .start { result in
        switch result {
        case .success(let credentials):
            print("credentials: \(credentials)")
        case .failure(let error):
            print(error)
         }
     }

Аутентификация () вызов:

 Auth0
    .authentication()
    .login(
        usernameOrEmail: "me@mycompany.com",
        password: "password",
        realm: "MY-CONNECTION",
        audience: "https://myapp.auth0.com/userinfo",
        scope: "openid")
    .start { result in
        switch result {
        case .success(let credentials):
            print("Obtained credentials: \(credentials)")
        case .failure(let error):
            print("Failed with \(error)")
        }
}

Спасибо,

Бен

1 Ответ

0 голосов
/ 11 сентября 2018

Мне было отмечено, что создание пользовательского логина Auth0 в основном идет вразрез с безопасностью, которую пытается обеспечить Auth0. Он берет обработку имен пользователей и паролей из рук Auth0 и возвращает их к обработке создателем приложения.

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

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

...