У меня есть конечная точка OData, определенная в ~/odata/, доступ к которой не требуется, если пользователь не прошел проверку подлинности (фактически, как вы защитите это для пользователей, не прошедших проверку подлинности).
Я устанавливаю аутентификацию на основе ролей по этому пути в web.config с помощью:
<location path="odata">
<system.web>
<authorization>
<allow roles="WaitConfirmation, etc...."/>
</authorization>
</system.web>
</location>
Когда пользователь входит в систему, я не использую конечную точку OData для аутентификации (главным образом потому, что мне нужно выяснить, как это защитить).
Я использую EntityFramework для проверки пользователя, возврата объекта пользователя и уточнения сведений о членстве/ролях.
Является ли это стандартным методом, которому следует следовать, чтобы разрешить вызовы данных пользователей проходить через пути WebAPI, и если да, то как вы гарантируете, что любые запросы запросов WebAPI (помните, я использую OData) возвращают только данные, относящиеся к вошедшему в систему пользователю ?
Я только читал о «защите» сервисов OData с помощью декорирования методов контроллера (т.е. [Queryable(PageSize=10)]) для ограничения DOS-атак и т. д., но не о том, как гарантировать, что если общий параметр (т.е. UserID=[this logged in user id]) не включен , чтобы включить его во все запросы EF.