#c# #.net #wcf #web-services #windows-phone-7
#c# #.net #wcf #веб-службы #windows-phone-7
Вопрос:
Здравствуйте, я хотел запросить ключи api (идентификаторы клиентов, приложения и т.д.) У веб-службы в созданном мной веб-приложении .NET. Дело в том, что мне нужно сделать этот веб-сервис безопасным, другими словами, только загруженное приложение на wp7 должно иметь возможность запрашивать этот веб-сервис. Есть ли какая-то строка для конкретного устройства, по которой я могу пройти аутентификацию, чтобы убедиться, что устройство WP7 вызывает это?
Причина, по которой я это делаю, заключается в том, что в случае, если ключ когда-либо будет скомпрометирован, я могу изменить его из своего веб-приложения без необходимости обновлять приложение на каждом отдельном устройстве, на которое оно было загружено.
У кого-нибудь есть предложения о том, как это сделать?
Ответ №1:
Любая строка, относящаяся к конкретному устройству, может быть подделана, а в WP7 сегодня нет метода безопасного хранения. Обычная схема заключается в возврате токена аутентификации из метода входа по протоколу https, который затем сохраняется на устройстве в виде зашифрованного потока. Поймите, что ключ дешифрования и строка находятся на устройстве и могут быть расшифрованы, если устройство скомпрометировано. Затем вы также можете в любое время прекратить действие токенов аутентификации на стороне сервера, и токены могут истечь через определенное время.
Комментарии:
1. Я согласен. Пока клиент имеет доступ к коду, он может взломать его. Но, вероятно, в этом сценарии достаточно иметь «достаточно хорошую» безопасность.
2. Так стоит ли вообще вызывать ее из веб-службы? Или лучше просто хранить его внутри приложения в зашифрованном виде?
3. Вы не хотите хранить ключ в своем приложении, если его необходимо регулярно «поворачивать».
4. итак, если я вас правильно понял, ключ, возвращаемый веб-службой, зашифрован. А внутри приложения содержится ключ для расшифровки зашифрованного ключа, возвращаемого из веб-службы?
5. Считайте ключ, возвращаемый веб-службой, «токеном доступа», который необходимо передавать при каждом последующем вызове службы — токен доступа связан с пользователем, которому предоставляется доступ к службе. Вы должны сохранить этот токен доступа в изолированном хранилище в виде зашифрованного потока. Вам все еще необходимо иметь ключ дешифрования локально на вашем телефоне — и это ваше слабое звено. В настоящее время это невозможно обойти.