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

如何使用Visual Studio Code为.NET Core配置ADFS身份认证?请提供示例及相关链接

没问题,我来一步步教你怎么在VS Code里给.NET Core项目配置ADFS身份认证,顺便给你一些实用的示例和参考思路~

一、准备工作

在开始配置前,你得先搞定这几件事:

  • 已经搭建并运行的ADFS服务器,并且知道它的元数据地址(一般是https://your-adfs-server/FederationMetadata/2007-06/FederationMetadata.xml)
  • VS Code里安装了C#扩展,方便编写和调试.NET Core代码
  • 本地安装了对应版本的.NET Core SDK
  • 在ADFS管理控制台里注册好你的应用程序(也就是添加「依赖方信任」,设置好应用标识符、回调地址这些关键信息)
二、VS Code中配置.NET Core项目的ADFS认证步骤

1. 创建或打开项目

如果还没有项目,打开VS Code的终端,运行以下命令创建一个MVC项目:

dotnet new webapp -n AdfsDemo
cd AdfsDemo
code .

如果已有项目,直接在VS Code中打开即可。

2. 安装必要的NuGet包

在终端里运行命令,添加支持ADFS的Ws-Federation认证包:

dotnet add package Microsoft.AspNetCore.Authentication.WsFederation

3. 配置应用设置

打开appsettings.json,添加ADFS相关的配置节点:

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
    }
  },
  "AllowedHosts": "*",
  "AdfsSettings": {
    "MetadataAddress": "https://your-adfs-server/FederationMetadata/2007-06/FederationMetadata.xml",
    "Wtrealm": "urn:your-app-realm", // 替换成你在ADFS里注册的应用标识符
    "Wreply": "https://localhost:5001/signin-wsfed" // 替换成ADFS里配置的回调地址
  }
}

4. 配置认证中间件

打开Program.cs(.NET 6及以上版本是顶级语句格式),添加认证服务和中间件:

using Microsoft.AspNetCore.Authentication.Cookies;
using Microsoft.AspNetCore.Authentication.WsFederation;

var builder = WebApplication.CreateBuilder(args);

// 读取ADFS配置
var adfsSettings = builder.Configuration.GetSection("AdfsSettings");

// 配置认证方案:Cookie用来保存登录状态,WsFederation用来跳转到ADFS认证
builder.Services.AddAuthentication(options =>
{
    options.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
    options.DefaultChallengeScheme = WsFederationDefaults.AuthenticationScheme;
})
.AddCookie() // 添加Cookie认证
.AddWsFederation(options =>
{
    options.MetadataAddress = adfsSettings["MetadataAddress"];
    options.Wtrealm = adfsSettings["Wtrealm"];
    options.Wreply = adfsSettings["Wreply"];
});

// 添加MVC控制器和视图支持
builder.Services.AddControllersWithViews();

var app = builder.Build();

// 启用HTTPS重定向(ADFS一般要求HTTPS)
if (!app.Environment.IsDevelopment())
{
    app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();

app.UseRouting();

// 一定要先启用认证,再启用授权
app.UseAuthentication();
app.UseAuthorization();

// 配置路由
app.MapControllerRoute(
    name: "default",
    pattern: "{controller=Home}/{action=Index}/{id?}");

app.Run();

5. 保护需要认证的页面/控制器

在需要用户登录才能访问的控制器或Action上添加[Authorize]特性,比如新建一个SecureController:

using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;

namespace AdfsDemo.Controllers;

[Authorize]
public class SecureController : Controller
{
    public IActionResult Index()
    {
        // 这里可以获取登录用户的信息
        ViewBag.UserName = User.Identity.Name;
        return View();
    }
}

然后在Views/Secure/Index.cshtml里展示用户信息:

<h1>欢迎访问安全页面</h1>
<p>当前登录用户:@ViewBag.UserName</p>
三、演示示例思路

你可以基于上面的配置做一个简单的演示:

  • 在首页(Home/Index)添加一个按钮,链接到Secure/Index
  • 当用户点击按钮时,因为SecureController有[Authorize]特性,系统会自动跳转到ADFS的登录页面
  • 用户输入ADFS的账号密码后,会回调到你的应用,自动登录并显示安全页面的用户信息
  • 还可以添加退出功能,通过SignOutAsync方法清除Cookie并跳转到ADFS的退出地址
四、参考方向
  • 可以查看.NET官方文档中关于「WsFederation Authentication」的详细说明,了解更多配置选项(比如自定义用户信息映射、认证事件处理等)
  • 参考ADFS官方文档,学习如何正确注册依赖方信任、配置声明规则等服务器端操作

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:23:15