2016-12-28 20 views
0

Я хотел бы добавить страницу с защитой паролем в мое приложение WPF modernUI и могу с ней помочь.Защищенная паролем страница

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

Мое применение используется на нескольких машинах. Защищенная страница должна быть какой-то административной страницей для редактирования базы данных, используемой приложением. Моя идея в том, что есть только одна учетная запись администратора. Но эта учетная запись может использоваться с любой машины. Администратор должен иметь возможность изменить свой пароль. Таким образом, на сервере должен быть какой-то зашифрованный файл паролей, к которому можно получить доступ с любого компьютера. Я не хочу хранить пароль в приложении, так как это означает, что администратор должен изменить свой пароль на каждом компьютере.

Итак, мой вопрос: что является лучшим/безопасным решением для моей идеи? Я просто ищу намеки, так как я не знаю, что искать.

+0

Если вы не хотите защищать пароль на локальном компьютере, вам необходимо разработать API, обрабатывающий запросы на вход. Не использовать прямой mysql – chris579

+0

Я думал об использовании базы данных, которая была бы достаточно массивной только для одного имени пользователя и пароля. Или сохранить пароль, зашифрованный в текстовый файл. Почему я не должен использовать mysql? Какая была бы лучшая практика? – mykds

+2

Прямое соединение с MySQL может быть вредным, например. неудачные разрешения или конфиденциальные данные. Каждый может перепроектировать пароль (помните, что вы используете .NET) и можете получить доступ к таблице пользователей, содержащей пароли и соли – chris579

ответ

2

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

Что вам нужно - это WebService. Веб-сервис может быть любым. Он просто должен быть размещен где-то. Это может быть приложение ASP.NET, служба WCF или даже что-то не связанное с .NET как приложение PHP или Java.

Связь между вашим приложением и вашим WebService зависит от того, что вы решите использовать. Сегодня многие люди используют так называемые REST API, которые используют XML или JSON в качестве формата передачи данных и используют протокол HTTP.

Его не сложно реализовать такой API, так как там есть множество Libs и Solutions.

Вы можете использовать RestSharp для связи на вашей стороне клиента. Это прямолинейно и просто. Вы также можете использовать службу WCF. Что размещено в IIS где-то.

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

1

Ваш вопрос довольно широк, но, насколько это касается WPF, вы можете внедрить собственную аутентификацию и авторизацию в своем приложении, создав классы которые вытекают из интерфейсов IIdentity и IPrincipal и переопределяют идентичность по умолчанию для потока приложений. Дополнительную информацию см. В следующем сообщении в блоге.

Пользовательские разрешения в WPF:https://blog.magnusmontin.net/2013/03/24/custom-authorization-in-wpf/

Фактические учетные данные должны храниться на каком-то удаленном сервере, которые могут быть доступны через веб-сервис, службы WCF или какой-либо другой вид API. Подробные сведения о том, как на самом деле получить credentails, будут реализованы в классе AuthenticationService в примере кода из приведенной выше ссылки.