You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

部署Azure的.NET 4.8 ASP.NET MVC应用Azure AD认证实现步骤咨询

基于.NET 4.8的ASP.NET MVC应用集成Azure AD身份认证步骤

一、Azure门户端配置

  • 注册Azure AD应用程序
    1. 登录Azure门户,搜索进入「Azure Active Directory」,找到「应用注册」模块,点击「新注册」
    2. 填写应用名称(比如你的MVC应用名),账户类型根据需求选择(推荐先选「仅限此组织目录中的账户」),重定向URI选择「Web」,填入部署后应用的根地址+/signin-oidc(例:https://yourapp.azurewebsites.net/signin-oidc),完成注册
    3. 注册成功后,记录页面上的应用程序(客户端)ID和目录(租户)ID,后续代码要用到
  • 创建客户端密钥
    1. 在刚注册的应用详情页,进入「证书和密码」,点击「新客户端密码」
    2. 填写密钥描述和过期时间,点击添加,生成后立刻复制密钥值(仅显示一次)并保存好

二、应用代码修改

  • 安装必要NuGet包
    在Visual Studio打开你的MVC项目,通过NuGet包管理器安装Microsoft.Owin.Security.OpenIdConnect和Microsoft.Owin.Security.Cookies两个包
  • 添加Owin启动配置
    如果项目没有Startup.cs,在根目录新建该文件,代码如下(替换YourMvcApp为你的项目命名空间):
    using Microsoft.Owin;
    using Owin;
    using Microsoft.Owin.Security.Cookies;
    using Microsoft.Owin.Security.OpenIdConnect;
    using System.Configuration;
    
    [assembly: OwinStartup(typeof(YourMvcApp.Startup))]
    namespace YourMvcApp
    {
        public class Startup
        {
            public void Configuration(IAppBuilder app)
            {
                app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);
                app.UseCookieAuthentication(new CookieAuthenticationOptions());
    
                app.UseOpenIdConnectAuthentication(
                    new OpenIdConnectAuthenticationOptions
                    {
                        ClientId = ConfigurationManager.AppSettings["AzureAd:ClientId"],
                        Authority = $"https://login.microsoftonline.com/{ConfigurationManager.AppSettings["AzureAd:TenantId"]}",
                        RedirectUri = ConfigurationManager.AppSettings["AzureAd:RedirectUri"],
                        ClientSecret = ConfigurationManager.AppSettings["AzureAd:ClientSecret"],
                        ResponseType = "code id_token",
                        Scope = "openid profile email",
                        TokenValidationParameters = new System.IdentityModel.Tokens.TokenValidationParameters
                        {
                            ValidateIssuer = true,
                        },
                        Notifications = new OpenIdConnectAuthenticationNotifications
                        {
                            AuthenticationFailed = context =>
                            {
                                context.HandleResponse();
                                context.Response.Redirect("/Error?message=" + context.Exception.Message);
                                return System.Threading.Tasks.Task.FromResult(0);
                            }
                        }
                    });
            }
        }
    }
    
  • 配置Web.config
    在<appSettings>节点下添加Azure AD相关配置,填入之前记录的信息:
    <add key="AzureAd:ClientId" value="你的客户端ID" />
    <add key="AzureAd:TenantId" value="你的租户ID" />
    <add key="AzureAd:RedirectUri" value="你的重定向URI" />
    <add key="AzureAd:ClientSecret" value="你的客户端密钥" />
    
  • 设置授权与登录登出逻辑
    1. 在需要权限验证的控制器或Action上添加[Authorize]特性,示例:
      [Authorize]
      public class HomeController : Controller
      {
          public ActionResult Index()
          {
              // 获取当前登录用户信息
              var user = User.Identity;
              ViewBag.UserName = user.Name;
              ViewBag.UserEmail = user.FindFirst(System.Security.Claims.ClaimTypes.Email)?.Value;
              return View();
          }
      }
      
    2. 在视图中添加登录/登出入口:
      @if (User.Identity.IsAuthenticated)
      {
          <p>欢迎, @User.Identity.Name!</p>
          @Html.ActionLink("登出", "SignOut", "Account")
      }
      else
      {
          @Html.ActionLink("登录", "SignIn", "Account")
      }
      
    3. 创建Account控制器处理登录登出:
      public class AccountController : Controller
      {
          public void SignIn()
          {
              if (!Request.IsAuthenticated)
              {
                  HttpContext.GetOwinContext().Authentication.Challenge(
                      new AuthenticationProperties { RedirectUri = "/" },
                      OpenIdConnectAuthenticationDefaults.AuthenticationType);
              }
          }
      
          public void SignOut()
          {
              HttpContext.GetOwinContext().Authentication.SignOut(
                  CookieAuthenticationDefaults.AuthenticationType,
                  OpenIdConnectAuthenticationDefaults.AuthenticationType);
          }
      }
      
  • 部署到Azure App Service
    将项目发布到Azure App Service,确保部署后的地址和之前配置的重定向URI一致;也可以在App Service的「配置」->「应用程序设置」中添加Azure AD相关配置,替换Web.config中的硬编码(更安全)

内容的提问来源于stack exchange,提问作者Faisal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 08:07:33