Схемы аутентификации служб на основе REST WCF - PullRequest
0 голосов
/ 05 апреля 2010

У меня есть простая схема аутентификации для набора полуобщественных REST API, которые мы создаем:

                  /-----------------------\
                  | Client POST's ID/Pass |
                  | to an Auth Service    |
                  \-----------------------/
   [Client] ------------POST----------------------> [Service/Authenticate]
                                                             |
                                             /-------------------------------\
                                             |  Service checks credentials   |
   [Client] <---------Session Cookie-------  | and generates a session token |
      |                                      |         in a cookie.          |
      |                                      \-------------------------------/
      |
   [Client] -----------GET /w Cookie -------------> [Service/Something]
                               |                                          
              /----------------------------------\
              |  Client must pass session cookie |
              |      with each API request       |
              |       or will get a 401.         |
              \----------------------------------/

Это работает хорошо, потому что клиенту никогда не нужно ничего делать, кроме как получить cookie, а затем передать его. Для браузерных приложений это происходит автоматически браузером, для не браузерных приложений довольно просто сохранить куки и отправлять его с каждым запросом.

Однако я не нашел хорошего подхода для первоначального рукопожатия из браузерных приложений. Например, если все это происходит с использованием техники AJAX, что мешает пользователю получить доступ к идентификатору / паролю, который клиент использует для рукопожатия со службой?

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

Ответы [ 2 ]

1 голос
/ 05 апреля 2010

Одна возможность состоит в том, чтобы сгенерировать одноразовую панель для каждой страницы сервера AJAX и прикрепить эту панель к файлу сеанса.Теперь пользователь не может инициировать сеанс без одноразовой панели.Конечно, они могут просто запросить новую страницу, чтобы получить панель.

0 голосов
/ 05 апреля 2010

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

Если вы хотите контролировать 3-ий Partys с помощью вашего API, заставьте их использовать межсерверные соединения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...