.NET Framework中AddMicrosoftIdentityWebApiAuthentication等效替代方案咨询
.NET Framework中AD服务间认证的等效方案
对于.NET Framework的Web API,对应的等效方案是使用OWIN中间件结合Microsoft.Owin.Security.ActiveDirectory包实现Azure AD(或本地AD)的认证,具体实现步骤如下:
1. 安装必要NuGet包
需要安装以下核心包:
Microsoft.Owin.Security.ActiveDirectoryMicrosoft.Owin.Host.SystemWeb(用于将OWIN集成到IIS托管的Web API)Owin
2. 配置OWIN启动类
在项目中添加OWIN启动类(通常命名为Startup.cs),配置JWTBearer认证逻辑,示例代码:
using Microsoft.Owin; using Microsoft.Owin.Security; using Microsoft.Owin.Security.ActiveDirectory; using Owin; using System.Configuration; using System.IdentityModel.Tokens; [assembly: OwinStartup(typeof(YourApiNamespace.Startup))] namespace YourApiNamespace { public class Startup { public void Configuration(IAppBuilder app) { var issuer = ConfigurationManager.AppSettings["AzureAd:Issuer"]; var audience = ConfigurationManager.AppSettings["AzureAd:Audience"]; app.UseJwtBearerAuthentication(new JwtBearerAuthenticationOptions { AuthenticationMode = AuthenticationMode.Active, TokenValidationParameters = new TokenValidationParameters { ValidIssuer = issuer, ValidAudience = audience, ValidateIssuer = true, ValidateAudience = true, ValidateLifetime = true, ValidateIssuerSigningKey = true }, BackchannelCertificateValidator = new CertificateValidator() }); } } }
3. 配置Web.config参数
在Web.config的<appSettings>节点添加AD相关配置项:
<appSettings> <add key="AzureAd:Issuer" value="https://login.microsoftonline.com/{你的租户ID}/v2.0" /> <add key="AzureAd:Audience" value="{你的API应用ID URI}" /> </appSettings>
4. 保护API资源
在需要认证的控制器或Action上添加[Authorize]特性,和.NET Core中的用法一致:
using System.Web.Http; [Authorize] public class ValuesController : ApiController { // 你的API业务方法 }
关键说明
- 该方案和.NET Core中
AddMicrosoftIdentityWebApiAuthentication的核心逻辑一致:验证AD颁发的JWT令牌,实现服务间身份认证。 - 如果使用本地AD(而非Azure AD),需调整
Issuer配置并结合ADFS获取JWT令牌,验证逻辑需适配本地AD的签发规则。 - 服务间调用的流程和.NET Core场景完全相同:调用方从AD获取JWT令牌,在请求头中携带
Authorization: Bearer {token}即可完成认证。
内容的提问来源于stack exchange,提问作者Lev Kostychenko
相关产品推荐
相关产品推荐

