.Net 5.0 Web API 使用 Azure AD 身份验证

作者 : 慕源网 本文共3230个字,预计阅读时间需要9分钟 发布时间: 2021-12-6 共235人阅读

本文将向您简要介绍如何在 Azure 门户中设置 Azure Active Directory 并将 Azure AD 身份验证集成到我们的项目中。首先,让我们创建一个 Azure Active Directory 应用程序来帮助保护我们的 Web 应用程序。

前提条件

配置它的步骤是,

  1. 使用Microsoft Identity Platform创建 Web API 项目-身份验证类型
  2. 为 Web API 注册 Azure AD (AAD) 应用。
  3. 创建应用注册范围 (API)
  4. 更新 Web API 项目以使用 Azure AD 身份验证。
  5. 配置重定向 URL(如果您正在使用 Postman 进行测试)
  6. 创建客户端密钥。

创建 Web API 项目

选择项目模板

.Net 5.0 Web API 使用 Azure AD 身份验证

命名项目和解决方案及其保存位置。

.Net 5.0 Web API 使用 Azure AD 身份验证

  • 选择目标框架 – .Net 5.0 Current。
  • 更改身份验证类型 – Microsoft Identity Platform

.Net 5.0 Web API 使用 Azure AD 身份验证

为 Web API 注册 Azure AD (AAD) 应用

要对 Azure AD 进行身份验证,您需要添加 Azure AD 应用注册,这可以通过位于http://portal.azure.com   > Azure Active Directory > 应用注册 > 新应用注册的 Azure 门户完成 。

.Net 5.0 Web API 使用 Azure AD 身份验证

.Net 5.0 Web API 使用 Azure AD 身份验证

应用注册完成后,我们可以在 Azure 概览中看到客户端 ID 和租户 ID,并复制我们在配置设置中需要的那些 ID。

创建应用注册范围

范围是授权 API 所必需的,例如读写访问,因此如果我们处理多个项目或微服务,我们可以为我们的 API 定义多个范围。

为此,请选择 从 Azure _Auth 应用程序公开 API 。单击+ 添加范围按钮。它将打开弹出窗口以创建范围。

.Net 5.0 Web API 使用 Azure AD 身份验证

.Net 5.0 Web API 使用 Azure AD 身份验证

更新 Web API 项目以使用 Azure AD 身份验证

我们需要在 appsettings.json 中配置 Azure 活动目录设置,例如添加应用程序(客户端 ID)和租户 ID。

身份验证类型 Microsoft.identity.platform 有助于集成 Azure AD,它将在相应文件中添加所有基本配置设置。

app.settings.json

"AzureAd": {  
    "Instance": "https://login.microsoftonline.com/",  
    "Domain": "*Your domain name*", //Domain name configured in Azure  
    "TenantId": "0000-00000-00000-0000", // Tenant Id configured in Azure  
    "ClientId": "0000-00000-00000-0000", //  Client Id configured in Azure  
    "CallbackPath": "/signin-oidc"  
WeatherController.cs
using Microsoft.AspNetCore.Authorization;    
using Microsoft.AspNetCore.Mvc;    
using Microsoft.Extensions.Logging;    
using Microsoft.Identity.Web.Resource;    
using System;    
using System.Collections.Generic;    
using System.Linq;    
using System.Threading.Tasks;    
    
namespace AzureAD_OAuth_API.Controllers    
{    
    [Authorize]    
    [ApiController]    
    [Route("[controller]")]    
    public class WeatherForecastController : ControllerBase    
    {    
        private static readonly string[] Summaries = new[]    
        {    
            "Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching"    
        };    
    
        private readonly ILogger<WeatherForecastController> _logger;    
    
        // The Web API will only accept tokens 1) for users, and 2) having the "access_as_user" scope for this API    
        static readonly string[] scopeRequiredByApi = new string[] { "ReadWriteAccess" };    
    
        public WeatherForecastController(ILogger<WeatherForecastController> logger)    
        {    
            _logger = logger;    
        }    
    
        [HttpGet]    
        public IEnumerable<WeatherForecast> Get()    
        {    
            HttpContext.VerifyUserHasAnyAcceptedScope(scopeRequiredByApi);    
    
            var rng = new Random();    
            return Enumerable.Range(1, 5).Select(index => new WeatherForecast    
            {    
                Date = DateTime.Now.AddDays(index),    
                TemperatureC = rng.Next(-20, 55),    
                Summary = Summaries[rng.Next(Summaries.Length)]    
            })    
            .ToArray();    
        }    
    }    
}  

配置重定向 URL(如果您正在使用 Postman 进行测试)

要使用 Postman 测试 API,我们需要配置回调 URL。单击身份验证菜单,在平台配置下,添加重定向 URL – 添加Postman回调 URL – https://app.getpostman.com/oauth2/callback 和应用程序回调 URL。

.Net 5.0 Web API 使用 Azure AD 身份验证

创建客户端密钥

我们可以使用证书和机密菜单创建客户端机密,添加新的客户端机密。将描述和持续时间设置为从不。添加单击创建它会创建一个令牌复制它。你不会再看到它了。

.Net 5.0 Web API 使用 Azure AD 身份验证

在 Postman 中设置授权设置以测试 API

我们已经完成了使用 Postman 连接客户端的配置。现在打开 Postman,提供 URL – https://localhost:*****/WeatherForecast,然后选择授权选项卡并从类型列表中选择 OAuth 2 并在将授权数据添加到 Postman 中的授权值中选择请求标头.

  • 令牌名称 – 有效名称
  • 授权类型 – 选择授权类型
  • 回调 URL – https://app.getpostman.com/oauth2/callback
  • 身份验证 URL – https://login.microsoftonline.com/*租户 ID */oauth2/v2.0/authorize
  • 访问令牌 URL – https://login.microsoftonline.com/*租户 ID */oauth2/v2.0/token
  • 客户端 ID – 客户端 ID > Azure 门户
  • 客户端机密 – 机密值 > Azure 门户

.Net 5.0 Web API 使用 Azure AD 身份验证

填写所有字段后 – 您可以跳过 State 字段,单击 Get New Access Token 按钮。它将弹出 Azure AD 登录对话框,您可以登录。登录完成后,Postman 将显示一个 Token,可用于与 API 对话。

Azure 门户 > 登录

.Net 5.0 Web API 使用 Azure AD 身份验证

它将根据您的凭据进行身份验证,一旦身份验证完成,它将重定向到令牌页面。

.Net 5.0 Web API 使用 Azure AD 身份验证

下面是通过使用我们的凭据进行身份验证生成的令牌,单击 > 使用令牌 > 它将自动添加到请求标头中。

.Net 5.0 Web API 使用 Azure AD 身份验证

身份验证成功后,现在我们可以发送 GET 请求,该请求将返回 JSON 结果,如下所示。

.Net 5.0 Web API 使用 Azure AD 身份验证

GitHub – 源代码

结论

我希望本文能让您清楚地了解如何在 Azure 门户中设置 Azure AD 并使用 .Net 5.0 对 Web API 进行身份验证。下一篇文章将向您展示我们如何将 Azure 广告身份验证与 Swagger 集成。


慕源网 » .Net 5.0 Web API 使用 Azure AD 身份验证

常见问题FAQ

程序仅供学习研究,请勿用于非法用途,不得违反国家法律,否则后果自负,一切法律责任与本站无关。
请仔细阅读以上条款再购买,拍下即代表同意条款并遵守约定,谢谢大家支持理解!

发表评论

开通VIP 享更多特权,建议使用QQ登录