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

.NET4.7.2 ASP.NET应用(Azure托管)如何实现Azure AD WS-Federation认证

为Azure App Service上的ASP.NET 4.7.2应用配置Azure AD WS-Federation认证

一、Azure AD应用注册与配置

  • 登录Azure Portal,进入Azure Active Directory → 应用注册 → 新注册
    • 填写应用名称,账户类型选「仅此组织目录中的账户」,注册后记录客户端ID和租户ID
  • 进入该应用的「身份验证」→ 添加平台 → 选择「Web」
    • 重定向URI填入你的App Service域名+/wsfed(例:https://yourapp.azurewebsites.net/wsfed)
    • 开启「允许隐式流」的「ID令牌」,保存配置
  • 进入应用的「端点」,复制「WS-Federation 元数据文档」链接,备用
  • (可选)进入「企业应用程序」找到该应用,在「用户和组」中添加允许访问的用户/组

二、Azure App Service启用认证

  • 打开你的App Service资源 → 身份验证 → 添加身份提供者
    • 选择「Microsoft」,关联刚才注册的应用(或手动填入租户ID、客户端ID)
    • 未认证请求处理选「HTTP 302 重定向到登录页」,完成添加

三、ASP.NET 4.7.2应用代码配置

  1. 安装NuGet包
    • 在Visual Studio中为项目安装Microsoft.Owin.Security.WsFederation和Microsoft.Owin.Host.SystemWeb
  2. 添加OWIN启动类
    • 项目根目录新建Startup.cs,代码如下:
      using Microsoft.Owin;
      using Owin;
      using Microsoft.Owin.Security.WsFederation;
      using System.Configuration;
      
      [assembly: OwinStartup(typeof(YourApp.Startup))]
      namespace YourApp
      {
          public class Startup
          {
              public void Configuration(IAppBuilder app)
              {
                  // 配置WS-Federation认证
                  app.UseWsFederationAuthentication(new WsFederationAuthenticationOptions
                  {
                      MetadataAddress = ConfigurationManager.AppSettings["WsFedMetadataUrl"],
                      Wtrealm = ConfigurationManager.AppSettings["WsFedRealm"],
                      CallbackPath = new PathString("/wsfed"),
                      SignInAsAuthenticationType = "Cookies"
                  });
      
                  // 启用Cookie认证存储身份信息
                  app.UseCookieAuthentication(new Microsoft.Owin.Security.Cookies.CookieAuthenticationOptions
                  {
                      AuthenticationType = "Cookies"
                  });
              }
          }
      }
      
  3. 修改Web.config
    • 在<appSettings>中添加:
      <add key="WsFedMetadataUrl" value="你复制的WS-Federation元数据链接" />
      <add key="WsFedRealm" value="你的App Service域名" />
      
    • 将<system.web>下的authentication模式改为None:
      <authentication mode="None" />
      
    • 若要强制所有用户认证后访问,添加:
      <authorization>
          <deny users="?" />
      </authorization>
      

四、测试与验证

  • 发布应用到App Service,访问域名会自动跳转到Azure AD登录页,登录后即可进入应用
  • 代码中可通过HttpContext.Current.User.Identity获取用户信息,示例:
    var userEmail = HttpContext.Current.User.Identity.Name;
    var userId = ((System.Security.Claims.ClaimsIdentity)HttpContext.Current.User.Identity)
                 .FindFirst(System.Security.Claims.ClaimTypes.NameIdentifier)?.Value;
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 00:54:33