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

.NET Core 8.0 API集成SSO:是否需双应用?无客户端可行吗?

无需搭建额外登录网页,照样能实现SSO保护你的.NET Core API

你完全不用单独开发登录网页,核心逻辑是让调用API的请求带上Azure AD颁发的有效访问令牌,API通过验证令牌来实现SSO保护。结合你的场景,推荐这几种可行方案:

1. 客户端凭据流(适合后台服务调用)

如果你的API是被其他后台系统、定时任务这类非交互式服务调用,用这个流最适配:

  • 在Azure AD里注册一个「服务主体」(相当于服务的身份账号),给它配置访问你API的权限;
  • 调用方用服务主体的密钥或证书,向Azure AD申请访问令牌;
  • 调用API时,把令牌放在请求头Authorization: Bearer <令牌>里;
  • .NET Core 8里配置验证很简单,用Microsoft.Identity.Web包,在Program.cs里加:
    builder.Services.AddMicrosoftIdentityWebApiAuthentication(builder.Configuration, "AzureAd");
    
    然后在appsettings.json里配置Azure AD的租户ID、API的客户端ID等参数即可。

2. 授权码流+PKCE(适合用户用工具手动调用)

如果是用户用Postman、curl这类工具手动调用API,用这个流:

  • 在Azure AD里注册一个「公共客户端应用」,开启PKCE;
  • 用户通过工具触发授权流程,会自动跳转到Azure AD官方的登录页(不用你自己搭),登录后拿到授权码,再兑换成访问令牌;
  • 拿到令牌后,同样通过Authorization头携带令牌调用你的API。

3. 设备授权流(适合无浏览器的终端调用)

如果调用场景是没有浏览器的命令行终端,用这个流:

  • 用户在终端里发起请求,会得到一个验证码和Azure AD的登录链接;
  • 用户用手机/电脑打开链接,输入验证码并完成Azure AD的登录(同样用官方登录页);
  • 终端会自动获取到访问令牌,之后就能调用API。

关键注意点

你只需要在Azure AD里注册对应的「API应用」,配置好允许访问的身份(服务主体或用户),然后在你的.NET Core API里配置身份验证中间件,验证请求中的令牌合法性即可,全程不需要自己开发登录页面。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 16:40:03