2013-10-11 3 views
1

Я - администратор базы данных SQL Server, пытающийся раскрыть работу RavenDB Security. Если я хочу создать защиту приложения, я буду использовать одного пользователя системы и одного пользователя приложения для каждого фактического пользователя.RavenDB Аутентификация и авторизация

Вопрос, который у меня есть, заключается в том, как я смогу установить контекст пользователя приложения. Мне нужно указать имя пользователя приложения и операцию для SecureFor(). Однако откуда я могу получить информацию о пользователе (пользователя, который зарегистрировался) без жесткого кодирования в приложении.

Примеры, которые я вижу на сайте RavenDB, с жестко закрепленными пользователями в SecureFor, но в реальной жизни я буду предполагать, что имя пользователя будет связано с фактическим пользователем, который будет динамическим.

С уважением, Venky

ответ

2

Я полагаю, вы говорите о Authorization Bundle page within the RavenDB Documentation.

Вы не говорили о проблемном домене, поэтому, прежде всего, я должен упомянуть, что моим предпочтением было бы не использовать Авторизация. Поскольку в большинстве программных систем there is a difference between system users and application users вы должны разрешить пользователю 100% -ный доступ на чтение/запись к базе данных, а также контролировать, какие приложения имеют доступ к использованию логики приложения.

Это, как говорится, я не хочу слишком много спорить. Предположим, что у вас есть проверяемая потребность в пакете авторизации.

Операция, которую вы определяете самостоятельно в соответствии с вашими бизнес-правилами. Я полагаю, вы понимаете, что уже потому, что вы не спрашиваете, откуда это возникнет в вашем вопросе.

Пользователь должен быть определен из контекста, в котором работает код. В принципе, аутентификация является отдельной проблемой.

Из веб-приложения ASP.NET вы либо используете проверку подлинности Windows в среде домена, чтобы получить идентификатор пользователя Windows, или, возможно, аутентификацию форм, чтобы получить идентификаторы, хранящиеся в вашем собственном приложении. Вы можете получить, затем получить личность текущего пользователя через кишки ASP.NET. (Наилучший способ доступа к нему различается в зависимости от того, поступаете ли вы от веб-форм, MVC, WebAPI и т. Д.). Как вы переводите текущего пользователя в пользовательскую строку авторизации (Authorization/Users/DrHowser в примере из документов) до вы.

+0

Спасибо Дэвиду за очень четкое объяснение. У меня был следующий вопрос. –

+0

Спасибо Дэвиду за это очень четкое объяснение. У меня был следующий вопрос. У меня создалось впечатление, что пользователь приложения (пользователь из пакета аутротизации) должен быть проверен, как пользователи приложений на SQL Server, но теперь я понимаю, что RavenDB просто лишает идентификатор пользователя, упомянутый в SecureFor(). Правильно ли это?Еще раз спасибо, Venky –

+0

Да, вам все равно нужно разрешить (подтвердить учетные данные) входящего пользователя. Это принципиальное различие между аутентификацией и авторизацией. Пакет RavenDB выполняет авторизацию только при условии, что вы уже подтвердили идентификацию пользователя. –

0

Возможно, вы найдете следующее интересное. ASP.NET Identity - это новое членство для ASP.NET. Идентификатор ASP.NET позволяет добавлять основные функции входа/выхода, а также обеспечивает поддержку первого класса для сохранения вашей информации о членстве в хранилище Non SQL. По умолчанию ASP.NET Identity использует EF, но вы можете легко заменить этот слой RavenDb без изменения кода. Вы можете взглянуть на реализацию RavenDb для идентификатора ASP.NET здесь https://github.com/tugberkugurlu/AspNet.Identity.RavenDB Это показывает, что если у вас есть приложение MVC, вы можете заменить хранилище своей информации о членстве от EF до RavenDb, просто зарегистрировав хранилище RavenDb вместо EF. Если вы хотите получить дополнительную информацию об идентификаторе ASP.NET, посетите http://asp.net/identity

Смежные вопросы