Какой поток использовать с Identity Server 4 для Nativescript Application и как он защищен? - PullRequest
0 голосов
/ 08 декабря 2018

Я провел довольно много исследований по этой теме, и меня немного смущает, как это сделать.Насколько я понимаю, это:

Чтобы использовать Identity Server 4 с приложением для Android, лучший способ состоит в том, чтобы приложение Android открывало встроенный экземпляр браузера, который будет отображать страницу входа на сервер идентификации для пользователя, где пользователь можетвойдите в систему. По завершении браузер закроется, и в приложении будет вызван метод для передачи токенов, необходимых для доступа к API и утверждениям, а что нет.Теперь меня смущает, какой тип клиента мы используем для этого и как будет выглядеть конфигурация для этого клиента?

Вот схема того, что я описал выше, если это неправильно, пожалуйста,не стесняйтесь меня поправлять.

App Identity Flow
Статья, из которой я ее получил: https://tools.ietf.org/html/draft-ietf-oauth-native-apps-09#section-4.1

Я использую nativescript для сборки своего приложенияи я делаю это там, потому что я не уверен, насколько это будет иметь значение, поэтому, если вы считаете, что это имеет значение, укажите, почему.

Неявный клиент используется для приложений SPA, и это один изклиенты у меня уже есть настройка и работа с моим угловым приложением.Сейчас я пытаюсь заставить его работать с приложением родного скрипта, но варианты из того, что я читаю, либо GrantTypes.Hybrid, либо GrantTypes.Code. Некоторые из найденных ответов говорят, что мы должны использовать Hybrid, а другие говорят, что мы должныиспользовать код, и я не уверен, что является правильным и почему?

Другая вещь, которая беспокоит меня, это то, как это безопасно в приложении для Android.С помощью SPA и неявного потока мы определяем URL для входа в систему и выхода из системы, поэтому эти домены заносятся в белый список и не будут работать ни с какими другими, что делает его безопасным.Тем не менее, с помощью приложения для Android, как именно это становится безопасным?Я не могу сохранить секрет на телефоне, потому что кто-нибудь может его выкопать, так что же именно с потоком (гибридным или кодовым, в зависимости от того, который я предполагаю использовать) сохраняет его?

Ответы [ 2 ]

0 голосов
/ 11 мая 2019

Вы можете вернуть код через параметр строки запроса, перенаправив пользователей в приложение, снова используя глубокие ссылки:

  • URL-адрес Android: my-demo://demo/callback?code=123...
  • URL-адрес iOS: my-demo://callback?code=123...

Для этого вы можете использовать метод openAuth нового плагина InAppBrowser => https://github.com/proyecto26/nativescript-inappbrowser

Более подробную информацию о безопасности вы можете увидеть в этой теме => https://github.com/NativeScript/NativeScript/issues/6923#issuecomment-473792810

0 голосов
/ 10 декабря 2018

Для описываемого вами потока вы должны использовать «Тип неявного предоставления».К сожалению, однако, в отличие от URL-адреса удаленного сервера, «не существует надежного способа обеспечить соблюдение связи между данным URI перенаправления и конкретным мобильным приложением».(из Какой правильный поток OAuth 2.0 для мобильного приложения ).

Как сказано в https://oauth.net/2/grant-types/implicit/, ", как правило, не рекомендуется использовать неявный поток (и некоторые серверыполностью запретить этот поток.) ​​За время, прошедшее с момента первоначального написания спецификации, передовая отраслевая практика изменилась и теперь рекомендует, чтобы публичные клиенты вместо этого использовали поток кода авторизации с расширением PKCE. "

Для получения подробной информации оPKCE, см. Ключ подтверждения для обмена кодами открытыми клиентами OAuth .

...