Создание платформы API разработчика в ASP.NET MVC 3? - PullRequest
4 голосов
/ 01 апреля 2011

Я создаю приложение ASP.NET MVC 3, которое имеет как интерфейс www (www.example.com), так и API разработчика (api.example.com).Я хотел бы сделать простой сервис доступным для разработчиков, где они подписываются на ключ и совершают с ним REST-вызовы.Мне непонятно несколько вещей:

1) Как мне генерировать и хранить ключи?Допустимо ли хранить их в виде обычного текста в базе данных или я должен их хешировать и солить?

2) Как авторизовать вызовы API?Я предполагаю, что не хочу делать это через членство в ASP.NET для этого.

Такие вещи, как ограничение скорости, кажутся простыми, когда я понимаю эти две проблемы.

1 Ответ

3 голосов
/ 01 апреля 2011

1) Это действительно зависит от вас.Я видел, что это было сделано совершенно по-разному в разных API, с которыми я работал.Некоторые ключи очень похожи на GUID, другие - просто случайные строки, но важно то, что они уникальны и их трудно угадать.От того, как вы храните их в базе данных, сколько усилий вы приложите для защиты своих данных, зависит уровень чувствительности учетных записей пользователей.Если характер предоставляемых вами услуг является строго конфиденциальным и / или вы можете в конечном итоге пройти аудит, то вам следует принять все необходимые меры для защиты данных (используя односторонний хэш и засолку).Моя личная философия заключается в том, чтобы сделать вещи максимально простыми, пока нет причин вносить дополнительную сложность, но я работал над сайтами, которые использовали одностороннее хеширование с солями для аутентификации.

2) Это зависит от того, ктособираюсь использовать ваш сервис.Вы можете использовать встроенный поставщик членства для проверки подлинности ASP.NET Forms и даже интегрировать его с общедоступным веб-сайтом, но это ограничит использование вашего API разработчиками, использующими платформу, поддерживающую файлы cookie в HttpProxies, и усложнит работу вашего API.следить.В большинстве сервисов с поддержкой REST, с которыми я сталкивался, использовалась комбинация базовой аутентификации и SSL, которая обеспечит самый широкий спектр поддержки для разработчиков, но будет сложнее реализовать на вашей стороне.На стороне сервера вам нужно будет захватывать учетные данные пользователей из заголовков HTTP и проверять их подлинность в вашей пользовательской базе данных.

...