Авторизация на сайте через OAuth
От: bnk СССР http://unmanagedvisio.com/
Дата: 09.07.14 15:14
Оценка:
Здравствуйте.
Вопрос общий, не уверен как именно задать.

Есть (мой) сайт на ASP.NET MVC, на сайте включена OAuth авторизация (гугл, фейсбук и т.п. из коробки), и который предоставляет Web API.
Пользователи могут регистрироваться с гугловским-фесбуковским и т.п. аккаунтом, это работает.

Но есть еще "десктопный" клиеет, который коннектится к этому сайту.
Хочется, чтобы десктопный клиент мог использовать авторизацию от гугла, фейсбука, и т.п. для обращения на сайт.
Т.е. чтобы он мог работать с сайтом "от имени" пользователя.

Как это организовывается? (что почитать на эту тему)
Спасибо
Re: Авторизация на сайте через OAuth
От: c-smile Канада http://terrainformatica.com
Дата: 09.07.14 23:31
Оценка:
Здравствуйте, bnk, Вы писали:

bnk>Как это организовывается? (что почитать на эту тему)


OAuth аутентификация требует браузера. По определению.
Все что ты можешь сделать это выдать некий временный token (на сервере) и каким-то образом его передать в свое приложение.
Каким именно образом — вариантов несколько.
Re[2]: Авторизация на сайте через OAuth
От: bnk СССР http://unmanagedvisio.com/
Дата: 10.07.14 00:39
Оценка:
Здравствуйте, c-smile, Вы писали:

bnk>>Как это организовывается? (что почитать на эту тему)


CS>OAuth аутентификация требует браузера. По определению.

CS>Все что ты можешь сделать это выдать некий временный token (на сервере) и каким-то образом его передать в свое приложение.
CS>Каким именно образом — вариантов несколько.

А можно поподробнее (или направление)?

Т.е. идея такая, что в своем "десктопном" приложении я логинюсь (например) в фейсбук (не суть важно как — например открыв браузер-контрол), он мне выдает токен, а потом клиентское приложение использует этот полученный от фейсбука токен для авторизации уже на моем сайте (т.е. для авториззации уже в АПИ). Т.е. сайт по этому токену должен как-то понять что я за пользователь. Примерно то что хочется.

Впрочем я похоже что-то торможу.
Если пользователь залогинился через third-party сервис, у меня же будет его email!
А по email я его смогу идентифицировать. Вроде так?
Re: Авторизация на сайте через OAuth
От: EndErr  
Дата: 10.07.14 05:40
Оценка:
Здравствуйте, bnk, Вы писали:

bnk>Здравствуйте.

bnk>Вопрос общий, не уверен как именно задать.

bnk>Есть (мой) сайт на ASP.NET MVC, на сайте включена OAuth авторизация (гугл, фейсбук и т.п. из коробки), и который предоставляет Web API.

bnk>Пользователи могут регистрироваться с гугловским-фесбуковским и т.п. аккаунтом, это работает.

bnk>Но есть еще "десктопный" клиеет, который коннектится к этому сайту.

bnk>Хочется, чтобы десктопный клиент мог использовать авторизацию от гугла, фейсбука, и т.п. для обращения на сайт.
bnk>Т.е. чтобы он мог работать с сайтом "от имени" пользователя.

bnk>Как это организовывается? (что почитать на эту тему)

bnk>Спасибо

Смотри в сторону REST
Re: Переформулирую. Как пользоваться Web API с "внешней" авторизаций
От: bnk СССР http://unmanagedvisio.com/
Дата: 10.07.14 09:08
Оценка:
Здравствуйте, bnk, Вы писали:

Наверное переформулирую вопрос.
Есть сайт на MVC, который имеет некое REST API и поддерживает "встроенную" и "внешнюю" авторизацию (внешняя — это те самый фейсбук, гугл, и т.д.)

Есть клиентское приложение (не web).
Как ему использовать API с "внешней" авторизацией?

Т.е. для "встроенной" все понятно — зовем Login(username, password), получаме токен,
дальше при вызовах методов API посылаем этот токен вместе с запросом.

А как этот процесс выглядит для "внешней"?
Re[2]: Авторизация на сайте через OAuth
От: bnk СССР http://unmanagedvisio.com/
Дата: 10.07.14 21:20
Оценка:
Здравствуйте, c-smile, Вы писали:

CS>Здравствуйте, bnk, Вы писали:


bnk>>Как это организовывается? (что почитать на эту тему)


CS>OAuth аутентификация требует браузера. По определению.

CS>Все что ты можешь сделать это выдать некий временный token (на сервере) и каким-то образом его передать в свое приложение.
CS>Каким именно образом — вариантов несколько.

Я согалсен что через браузер. Как это сделать-то?
Вроде еще раз определили для себя задачу:

— Есть сайт, у него есть REST API (WEB API), и авторизация (обычная парольная и OAuth гугл-фейсбук-и т.п.)

Как мне вызывать это WEB API из клиента, если клинет не браузер (например, из консольного приложения)?
Запустить окошко с контролом браузера, чтобы ползователь мог залогиниться — это без проблем. Вопрос в том, что дальше-то делать?

Т.е. какие данные (Claims/Token/whatever) мне нужно взять у этого браузера и куда их засунуть при обращении к API?

Пока что нашел похожий вопрос на stackoverflow, попробую покопать туда..
http://stackoverflow.com/questions/21065648/asp-net-web-api-2-how-to-login-with-external-authentication-services
Re[3]: Авторизация на сайте через OAuth
От: dimb82  
Дата: 14.07.14 10:50
Оценка:
bnk>Т.е. какие данные (Claims/Token/whatever) мне нужно взять у этого браузера и куда их засунуть при обращении к API?

bnk>Пока что нашел похожий вопрос на stackoverflow, попробую покопать туда..

bnk>http://stackoverflow.com/questions/21065648/asp-net-web-api-2-how-to-login-with-external-authentication-services

Для Google Drive и Oauth 2.0 делают примерно так:
    $client = new Google_Client();

    $client->setClientId($clientId);
    $client->setClientSecret($clientSecret);
    $client->setRedirectUri($redirectUri);
    $client->setScopes(array($oauthScope));

    $service = new Google_DriveService($client);

    $authUrl = $client->createAuthUrl();

    //Request authorization
    print "Please visit:\n$authUrl\n\n";
    print "Please enter the auth code:\n";
    $authCode = trim(fgets(STDIN));

    // Exchange authorization code for access token
    $accessToken = $client->authenticate($authCode);
    $client->setAccessToken($accessToken);


То есть просят пользователя перейти по URL. Пользователь в браузере копирует auth code и передаёт его клиентской программе.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.