我正在尝试使用 Azure Active Diretory Library 在 Web 应用程序和 OData V4 WebApi 之间实现身份验证。我使用 SQL 对用户进行身份验证,所以我不需要使用 AADL 对他们进行身份验证,只需对应用程序进行身份验证。我在互联网上看到了几个演示,但没有一个做这种事情。主要问题是我的 Web 应用程序正在使用 OData 客户端生成器,所以我不需要打开 HttpClient 请求来调用我的 API,我只是使用上下文来执行它。考虑到这种情况,如何保护我的 odata api 仅供我的 Web 应用程序使用?这是我的代码的一些示例。
我的 Odata 控制器之一
using System.Data.Entity.Infrastructure;
using System.Linq;
using System.Threading.Tasks;
using System.Web.Http;
using System.Web.OData;
using VPNUX.Model;
namespace VPNUX.API.Controllers
{
public class EstadosController : ODataController
{
private readonly DB_VPNUX _db = new DB_VPNUX();
[EnableQuery]
public IHttpActionResult GetEstados()
{
return Ok(_db.ESTADOS);
}
}
}
这是我在 Web 应用程序中调用此控制器的方式
public ApiContext ApiContext = new ApiContext(new Uri(ConfigurationManager.AppSettings["ApiUrl"]));
_consultaViewData.PacienteViewData.Estados =
ApiContext.Estados
.Select(estado => new ListItem(estado.NOME, estado.ID))
.ToList();
一切都直接来自我的 OData Client .cs 文件
这是我第一次使用 odata,效果很好,但我需要保护我的 API。
谢谢