如何使用Azure AD B2C保护Web API

问题描述

我有一个Angular应用程序和一个用.NET Core构建的单独的Web API解决方案。我已成功使用Azure AD B2C设置身份验证。我能够登录到角度应用程序。但是,我想保护我的Web API调用之一。即http:// localhost / Profile / GetProfile。麻烦的是,即使没有登录,我也能够成功查询该URL。

我在github中使用了sample application中的代码,但奇怪的是,当尝试从ClientApp进行api调用时,我未获得401的授权。但是,我可以在新标签页中(我的应用程序外部)成功打开该网址。我正试图达到相反的目的。也就是说,它应该在浏览器中显示401,但在我的ClientApp中显示200。我在做什么错了?

顺便说一句,当尝试导航到todo菜单项时,示例应用程序将引发未处理的异常。

解决方法

麻烦的是,即使在以下情况下,我也可以成功查询此网址 尚未登录。

这是因为成功登录后缓存仍然存在。使用浏览器隐私模式后,您将需要重新登录。

这些屏幕截图是否位于您想要实现的屏幕下方?您可以在this中解码令牌。请求的令牌是否成功与api端点不匹配。如果是,请检查您的客户端应用(API权限)和服务器应用(暴露API)。

    来自浏览器的
  1. 401 enter image description here
我的ClientApp中

2.200。(这是一个Microsoft graph me / endpoint演示。) enter image description here

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...