请参考Quickstart: Protect an ASP.NET Core web API with Microsoft identity platform。
Microsoft.AspNetCore.Authentication 中间件使用 Startup
托管进程初始化时执行的类。在其
ConfigureServices 方法,AddMicrosoftIdentityWebApi 扩展
调用 Microsoft.Identity.Web 提供的方法。
public void ConfigureServices(IServiceCollection services)
{
services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddMicrosoftIdentityWebApi(Configuration, "AzureAd");
}
您可以使用
[授权] 属性。
namespace webapi.Controllers
{
[Authorize]
[ApiController]
[Route("[controller]")]
public class WeatherForecastController : ControllerBase
部署到 Azure 应用服务不需要更多不同的配置。只需在调用时修改真正的 API 端点。
你可以在Scenario: Protected web API看到更多细节。
如果您想从 Web 应用调用 API,可以参考Scenario: A web app that calls web APIs。
请记住,您需要注册两个 Azure AD 应用程序,一个用于客户端应用程序(前端),另一个用于 API 应用程序(后端)。在 API 应用程序中,您需要公开 API。然后您需要配置客户端应用程序。将 API 应用程序公开的权限(范围)添加到客户端应用程序。这些都在上面的链接中提到。
更新:
我假设你已经在 Azure 门户上创建了两个 Azure AD 应用并配置了它们之间的权限。 (如果没有,请参考Register the service app (TodoListAPI)和Register the client app (TodoListSPA))
然后你可以像这样在 Postman 中测试你的 API:
在第二张截图中:
授权网址:https://login.microsoftonline.com/{tenant}/oauth2/v2.0/authorize
访问令牌网址:https://login.microsoftonline.com/{tenant}/oauth2/v2.0/token
客户端 ID 和客户端密码来自代表客户端应用 (TodoListSPA) 的 Azure AD 应用。
Scope 是代表服务应用 (TodoListAPI) 的 Azure AD 应用公开的应用 id uri。