Как использовать аутентификацию Google для углового веб-приложения и веб-API .net, размещенного на Azure - PullRequest
0 голосов
/ 29 апреля 2018

У меня есть угловое веб-приложение, говорящее с бэкэндом c # .net web api. Они оба размещены на службах приложений Azure. Службы приложений Azure предлагают набор служб проверки подлинности, и я решил использовать Google Auth. У меня есть идентификатор клиента Google и секретная настройка в Azure Google Auth, и мое веб-приложение правильно показывает и запрашивает мои учетные данные Google. Моя проблема сейчас заключается в том, что мне нужен мой веб-интерфейс API для проверки подлинности токена Google веб-приложения. Я не смог найти ни одной статьи или учебника, который демонстрирует следующее:

Как получить и отправить токен в веб API? Я читал, что служба приложений Azure должна автоматически вводить необходимые заголовки аутентификации, но любые вызовы моего API не включают эти заголовки. Должен ли я вручную вызвать auth / me и добавить их в заголовок запроса?

Как мне получить мой веб-API для аутентификации деталей из заголовка запроса с помощью Google Auth? Нужен ли отдельный идентификатор клиента для веб-API или я должен повторно использовать идентификатор клиента веб-приложения?

Ура!

1 Ответ

0 голосов
/ 03 мая 2018

Согласно вашему описанию, я предположил, что вы используете встроенную аутентификацию / авторизацию , предоставляемую службой приложений Azure.

AFAIK, Аутентификация службы приложений (Easy Auth) обеспечивает два потока: управляемый клиентом и управляемый сервером поток. Для потока, управляемого сервером, код сервера управляет процессом входа для вас, и ваш бэкэнд будет напрямую получать токен от соответствующего поставщика удостоверений (например, Google, AAD и т. Д.), А затем оба генерируют authenticationToken для приложения без браузера и AppServiceAuthSession cookie для приложений браузера. Подробности, за которыми вы можете следить Поток аутентификации .

Для вашего углового веб-приложения вы можете просто использовать поток, управляемый сервером, после того, как пользователь успешно вошел в систему, вам нужно позвонить https://<your-angular-app-name>.azurewebsites.net/.auth/me, чтобы получить google access_token, а затем отправить следующий запрос к конечной точке веб-API для получения. authenticationToken следующим образом:

POST https://<your-webapi-app-name>.azurewebsites.net/.auth/login/google
Body {"access_token":"<the-google-access-token>"}

После успешного получения authenticationToken с конечной точки веб-API вы можете отправить следующие последующие запросы на доступ к вашим API:

GET https://<your-webapi-app-name>.azurewebsites.net/api/values
Header x-zumo-auth:"<authenticationToken-generated-by-your-webapi>"

Кроме того, вы также можете использовать управляемый клиентом поток в своем угловом веб-приложении, вам может потребоваться напрямую связаться с вашим провайдером идентификации (Google), чтобы получить access_token в вашем клиенте через Auth0 или google-signin или другие сторонние библиотеки. Затем вам может потребоваться отправить запрос в ваше угловое веб-приложение и веб-приложение Web API для получения authenticationToken в качестве примера запроса выше.

Нужен ли отдельный идентификатор клиента для веб-API или мне следует повторно использовать идентификатор клиента веб-приложения?

Насколько я понимаю, вы должны использовать то же приложение Google. Для проверки подлинности AAD можно настроить приложение AAD с правами доступа к другому приложению AAD.

...