Может ли Xamarin.Auth поддерживать поток кода авторизации с получением токена доступа на стороне сервера, и если нет, то почему нет / что может? - PullRequest
0 голосов
/ 02 марта 2020

Я видел много постов, рекомендующих использовать Xamarin.Auth для единого входа в Xamarin, но просмотрев учебник , а также GitHub Getting Started wiki (в котором говорится он поддерживает «Поток кода авторизации», но, похоже, требует от клиента секретного ключа для получения кода авторизации, а это не то, что я ищу) и бесполезно искал в Интернете «неявный поток Xamarin.Auth», и « Поток кода авторизации Xamarin.Auth ", мне кажется, что Xamarin Auth поддерживает только неявный поток, который менее безопасен, чем поток кода авторизации для собственного приложения, которое подключено к приложению внутреннего веб-сервера, как у меня. Правильно ли я понимаю, что Xamarin.Auth может поддерживать только неявный поток (требующий, чтобы токен доступа был отправлен клиенту, а client_secret не может быть сохранен на стороне сервера и отправлен на стороне сервера как часть извлечения токен доступа), а не поток кода авторизации (в котором клиент получит только код авторизации, который он затем отправит на сервер, который затем получит токен доступа, используя секретный ключ клиента и, возможно, обмен PKCE)?

Более того, даже потоки с другими библиотеками, которые я видел рекомендованными, похоже, получают токен доступа к клиенту - AppAuth поддерживает PKCE, что является улучшением безопасности по сравнению с PKCE, но в сообщениях, которые я вижу, показаны примеры этого здесь и здесь и здесь все еще получают токен доступа на клиенте. Auth0 также рекомендуется в некоторых сообщениях, которые я видел (например, здесь ), но пример, который я вижу для этого здесь , также получает токен доступа на клиенте.

Есть ли причина, по которой сайты этого не делают? Кто-нибудь может указать мне пример библиотеки или документации по API для библиотеки, которая поддерживает получение только кода авторизации на стороне клиента в приложении Xamarin? (а затем отдельно, на стороне сервера, используя его для получения токена доступа, используя секретный ключ клиента, необязательно с той же библиотекой безопасности, поскольку это не обязательно должен быть код Xamarin - эта часть на стороне сервера, я уверен, довольно симпатичная стандартная вещь - например, как указано для Auth0 здесь )?

1 Ответ

0 голосов
/ 04 марта 2020

Xamarin.Auth действительно поддерживает поток кода авторизации. Как вы найдете в учебнике , класс Oauth2Authenticator Xamarin.Auth имеет параметры с именем «Client Secret», а также другие предоставляемые параметры, Xamarin.Auth способен обрабатывать часть обмена кодом авторизации и возвращать токен доступа. Возвращаясь непосредственно к вам, похоже, что эта часть не произошла, но на самом деле это произошло.

Копание в OAuth2Authenticator исходный код, метод VerifyOAuth2FlowResponseType показывает, что Xamarin.Auth обеспечивает как поток кода авторизации, так и неявный поток. Для получения более подробной информации вы можете прочитать код вместе с OAuth 2.0 Authorization Framework

И здесь является примером потока кода авторизации со стороны клиента.

...