2013-06-04 4 views
2

Я рассматриваю использование аутентифицированных зашифрованных токенов JWT для аутентификации/авторизации доступа к приложению веб-API ASP.NET.ASP.NET Web API - аутентифицированный зашифрованный JWT-токен - нужен ли мне OAuth?

Основываясь на том, что я читал до сих пор, мне кажется, что это возможность генерировать токены JWT из маркерной службы и передавать их в Web API через заголовок http-авторизации.

Я нашел несколько хороших примеров кода для реализации создания и потребления JWT (Pro ASP.NET Web API Security от Badrinarayanan Lakshmiraghavan).

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

Предполагая, что маркеры должным образом зашифрованы и подписаны, существует ли какой-либо недостаток безопасности в сохранении простых вещей без использования OAuth?

Попытка максимально упростить мои потребности без ущерба для безопасности.

+0

Отметьте мой ответ здесь: http://stackoverflow.com/questions/40281050/jwt-authentication-for-asp-net-web-api/40284152#40284152 –

ответ

6

Это не значит, что вы всегда должны использовать OAuth, когда используете токены. Но учитывая тот факт, что ваше приложение является приложением для JavaScript, вам лучше реализовать трехстороннюю аутентификацию. Сервер идентификации Thinktecture поддерживает implicit grant. Но если клиентское приложение получает доступ к учетным данным пользователя, это не проблема для вас, ваше приложение для JavaScript может получить идентификатор пользователя и пароль от пользователя и сделать запрос токена от эмитента маркеров, гарантируя, что идентификатор пользователя и пароль не будут сохранены где в приложении JavaScript (включая DOM). Этот запрос для токена может быть простым HTTP POST, а также не нужно ничего связать с OAuth. Если ваш конечный пользователь не будет вводить учетные данные в клиентском приложении, то подразумевается неявное предоставление OAuth. Кстати, вам не нужно шифровать JWT. Проблемы TIS подписали JWT, и это обеспечит целостность токена. Но если вас беспокоит конфиденциальность, вы можете использовать HTTPS для получения маркера, а также для подачи токена.

+0

Спасибо. Это то, что мне нужно. Ваша книга отличная кстати. Был ключевым ресурсом для понимания параметров и проблем безопасности для Web API. – bingles

+0

Спасибо. В дополнение к книге, обратитесь к блогу Dominick http://leastprivilege.com/. В нем много информации по теме безопасности, в частности, ASP.NET Web API. – Badri

+0

Не могли бы вы объяснить, как правильно шифровать токены JWT в ASP.Net MVC 5? Просьба также пояснить, относится ли зашифрованный JWT к зашифрованной полезной нагрузке в JWT? –

0

Похоже, что вам действительно не нужна авторизация, как тот, который предоставляется OAuth. Для вашего сценария недостаточно проверки подлинности HMAC? С HMAC вам не придется иметь дело с JWT вообще. Это реализация я сделал для проверки подлинности HMAC для .NET

https://github.com/pcibraro/hawknet

Пабло.

+0

Я не знаю достаточно о аутентификации HMAC, чтобы ответить , Это подходит для клиентского приложения Javascript? – bingles

+0

Ну нет, JWT может быть лучшим выбором для вас, но вы не сможете сгенерировать его в javascript. Для создания маркера вам нужен сервер. –

+0

Я думаю, что мой вопрос заключается в том, могу ли я создать простой токен-сервер JWT, с помощью которого приложение javascript может запросить токен, а затем просто передать этот токен в заголовке авторизации на мой веб-api, не заботясь о других деталях OAuth. – bingles