紧急应对身份泄露风险:1小时内完成VSCode的Entra ID模型迁移

第一章:紧急应对身份泄露风险:1小时内完成VSCode的Entra ID模型迁移

在企业开发环境中,一旦发生身份凭证泄露,必须立即采取措施阻断潜在攻击路径。当开发者使用VSCode通过旧版Azure AD身份模型连接云资源时,若其令牌暴露,攻击者可能横向移动至关键系统。为此,需在1小时内将VSCode的身份认证机制从传统AAD应用模型切换至基于Entra ID的现代身份模型,以利用条件访问、持续访问评估等安全能力。

准备工作:确认当前环境状态

  • 检查本地VSCode是否已安装“Microsoft Entra ID”扩展
  • 确认Azure门户中注册的应用程序是否启用“允许公共客户端流”
  • 获取管理员权限以更新应用的manifest配置

执行迁移步骤

  1. 登录Azure门户,导航至“Entra ID” > “应用注册”,选择目标应用
  2. 在“身份验证”选项卡中,添加新的重定向URI:vscode://microsoft-authentication
  3. 启用“默认客户端类型”下的“将客户端视为公共客户端”
{
  "oauth2AllowIdTokenImplicitFlow": true,
  "oauth2AllowAccessTokenImplicitFlow": true,
  "allowPublicClient": true
}

上述配置需更新至应用的manifest中,确保VSCode可通过PKCE流程安全获取令牌。

验证新身份模型可用性

测试项预期结果
VSCode登录提示显示“继续使用Microsoft Entra ID”按钮
API调用鉴权携带的新令牌由Entra ID签发,iss为https://login.microsoftonline.com/{tenant}/v2.0
graph TD A[开发者启动VSCode] --> B[触发MSAL交互] B --> C{Entra ID身份验证} C --> D[返回受限作用域令牌] D --> E[访问Azure资源]

第二章:VSCode与Entra ID集成的核心机制

2.1 理解Entra ID在开发工具链中的角色

Entra ID(前身为Azure Active Directory)在现代开发工具链中扮演着身份中枢的核心角色。它不仅管理用户身份,还统一控制对CI/CD流水线、代码仓库和云资源的访问权限。
身份即代码:与DevOps集成
通过将Entra ID与GitHub Actions或Azure DevOps集成,可实现基于策略的自动化访问控制。例如,在部署流程中验证服务主体权限:

permissions:
  id-token: write
  contents: read
env:
  AZURE_AD_CLIENT_ID: ${{ secrets.AZURE_AD_CLIENT_ID }}
该配置启用OpenID Connect(OIDC),允许工作流从Entra ID请求短期令牌,避免长期密钥暴露。`id-token: write` 权限触发与Entra ID的信任交换,实现“身份即代码”的安全范式。
多租户应用的身份治理
  • 集中管理开发者与第三方合作伙伴的访问权限
  • 通过条件访问策略实施MFA与设备合规检查
  • 审计日志集成至SIEM系统,追踪敏感操作

2.2 VSCode身份认证模型的演进与现状

早期VSCode的身份认证依赖本地凭证存储,用户通过手动登录扩展服务(如GitHub)完成授权。随着远程开发功能(Remote-SSH、WSL、Containers)普及,认证需求转向集中化与安全化。
Token-Based 认证机制
当前VSCode采用基于OAuth 2.0的令牌认证模型,通过vscode.authentication API统一管理会话:

const session = await vscode.authentication.getSession(
  'github', 
  ['repo'], 
  { createIfNone: true }
);
上述代码请求具备repo权限的GitHub会话,若不存在则触发登录流程。参数createIfNone控制是否弹出认证界面,提升用户体验连贯性。
认证状态同步与安全存储
所有token由系统密钥链(Keychain on macOS, Credential Manager on Windows)加密保存,支持跨设备同步(需启用Settings Sync)。认证状态在本地扩展间共享,避免重复登录。
  • 支持多账户并发会话
  • 扩展可监听认证变化事件
  • 会话有效期由服务端控制,定期刷新

2.3 基于Azure AD的令牌交换流程解析

在现代身份验证架构中,Azure AD支持安全的令牌交换机制,实现跨服务的身份委托。该流程通常基于OAuth 2.0的On-Behalf-Of(OBO)流。
令牌交换核心流程
用户初始获取访问令牌后,中间服务使用该令牌向Azure AD请求新的令牌以访问下游资源。Azure AD验证原始令牌的有效性,并颁发面向目标API的新令牌。

POST /oauth2/v2.0/token HTTP/1.1
Host: login.microsoftonline.com
Content-Type: application/x-www-form-urlencoded

grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer
&client_id=second-party-app-id
&client_secret=second-party-secret
&assertion=eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1Ni...  
&scope=https://graph.microsoft.com/User.Read
&requested_token_use=on_behalf_of
上述请求中,assertion为上游用户的JWT令牌,Azure AD据此确认身份来源;requested_token_use=on_behalf_of表明当前为代理请求,用于触发OBO策略验证。
关键安全控制
  • Azure AD要求应用必须预先配置“允许对应用程序进行委托权限”
  • 所有参与方需在AAD中注册并建立信任链
  • 令牌链可追溯,审计日志记录完整调用路径

2.4 权限最小化原则在IDE中的实践应用

插件权限的细粒度控制
现代集成开发环境(IDE)常依赖第三方插件扩展功能,但插件可能请求超出其功能所需的系统权限。遵循权限最小化原则,应仅授予插件完成其任务所必需的最低权限。
  • 禁止插件访问主项目源码目录以外的路径
  • 限制网络请求目标域名,如仅允许连接官方文档站点
  • 禁用本地命令执行能力,除非明确启用沙箱模式
配置示例:VS Code 工作区信任设置
{
  "security.workspace.trust.untrustedFiles": "open",
  "extensions.experimental.affinity": {
    "malicious-extension": 0
  }
}
该配置确保在未授信工作区中自动禁用高风险扩展,防止自动执行潜在恶意代码。参数 trust.untrustedFiles 控制非授信文件的默认打开行为,设为 open 可避免意外激活危险逻辑。

2.5 实现无密码登录:SSO与设备代码流实战

单点登录(SSO)基础集成
通过OAuth 2.0协议实现企业级SSO,用户可在多个应用间无缝切换而无需重复认证。关键在于身份提供者(IdP)与服务提供者(SP)间的信任链建立。
设备代码流适用场景
针对无浏览器环境(如IoT设备、CLI工具),采用设备代码流:
POST /device/code
Host: auth.example.com
Content-Type: application/x-www-form-urlencoded

client_id=my-client-id&scope=profile email
响应返回用户需访问的验证URL及显示码,设备轮询令牌端点直至用户完成授权。
核心流程对比
特性SSO设备代码流
用户体验一次登录,多系统通行扫码或手动输入验证码
适用终端Web/移动应用无头设备、TV等

第三章:迁移前的关键评估与准备

3.1 识别当前账户绑定风险与泄露面

在现代身份认证体系中,账户绑定机制常成为攻击者突破系统的入口。用户在多个平台间共享身份凭证,导致泄露面显著扩大。
常见泄露渠道分析
  • 第三方OAuth授权回调URL配置不当
  • 会话Token存储于不安全的本地缓存
  • 绑定邮箱或手机号被社工获取
代码级风险示例

// 危险的绑定逻辑:未验证回调来源
app.get('/auth/callback', (req, res) => {
  const { token, userId } = req.query;
  bindThirdPartyAccount(userId, token); // 缺少源站校验
});
上述代码未校验请求来源,攻击者可伪造回调注入恶意token,实现账户劫持。正确做法应包含state参数比对和HTTPS强制校验。
风险暴露矩阵
风险类型影响等级检测方式
跨域绑定漏洞渗透测试
Token泄露日志审计

3.2 备份现有配置并制定回滚策略

在系统变更前,备份现有配置是确保稳定性的关键步骤。应将核心配置文件归档至独立存储路径,便于快速恢复。
配置备份操作
使用以下命令备份 Nginx 配置:
tar -czf /backup/nginx-conf-$(date +%F).tar.gz /etc/nginx/conf.d/
该命令将当前配置按日期打包压缩,存入 /backup 目录,避免版本混淆。
回滚策略设计
建立自动化回滚流程,包含以下步骤:
  1. 停止当前服务
  2. 解压最近可用备份:tar -xzf nginx-conf-2024-04-01.tar.gz
  3. 重载配置:nginx -s reload
  4. 验证服务状态
通过定期校验备份完整性,并结合监控告警触发自动回滚,可显著降低故障恢复时间。

3.3 验证Azure订阅与Entra ID租户权限

在部署跨服务资源前,必须确认当前用户具备足够的权限访问目标Azure订阅及Entra ID(原Azure AD)租户。可通过Azure CLI执行身份验证检查。
权限验证命令
az login --tenant <tenant-id>
az account show
该命令序列首先以指定租户登录,确保上下文正确;随后显示当前订阅详情。若返回有效订阅信息,则表明用户至少拥有订阅读取权限。
所需权限清单
  • 订阅级别:User Access Administrator 或 Owner 角色
  • Entra ID:Application Developer 或 Application Administrator 权限
  • 需启用“允许应用代表用户访问”设置
典型错误响应
当权限不足时,CLI通常返回:Insufficient privileges to complete the operation. 此时应联系全局管理员分配适当角色。

第四章:快速迁移操作全流程指南

4.1 在VSCode中启用Entra ID身份提供者

在企业级开发环境中,统一身份认证是保障安全协作的关键。Visual Studio Code 支持通过 Entra ID(前身为 Azure AD)实现用户身份集成,提升多团队协作的安全性与便捷性。
配置步骤概览
  • 登录 Azure 门户并注册新的应用
  • 配置重定向 URI 为 vscode://vscode.microsoft-authentication
  • 启用“隐式授权”中的 ID Token 发放
  • 在 VSCode 设置中启用实验性功能:"remote.experimental.autoForwardPorts": true
本地开发环境集成示例
{
  "auth": {
    "provider": "EntraID",
    "tenantId": "your-tenant-id",
    "clientId": "your-client-id",
    "scopes": ["User.Read", "email"]
  }
}
该配置定义了身份提供者的必要参数:`tenantId` 指定组织租户,`clientId` 对应注册应用的唯一标识,`scopes` 声明所需权限范围,确保最小权限原则下的安全访问。

4.2 配置工作区级条件访问策略

策略配置基础
工作区级条件访问策略用于控制用户在特定条件下对资源的访问权限。通过 Azure Active Directory,管理员可在工作区粒度实施访问控制,确保敏感数据仅在合规设备和可信网络中被访问。
创建条件访问策略
  • 登录 Azure 门户并导航至“Azure Active Directory”
  • 选择“安全”下的“条件访问”
  • 点击“新建策略”,命名策略如“Workspace Access Control”
  • 在“分配”中选择目标用户或组
  • 在“云应用”中选择对应工作区资源
  • 设置“访问控制”为“授予”,并勾选“要求设备标记为合规”
{
  "displayName": "Workplace CA Policy",
  "state": "enabled",
  "conditions": {
    "users": { "includeGroups": ["group-id-123"] },
    "applications": { "includeApplications": ["workspace-app-id"] },
    "clientAppTypes": ["browser", "mobileAppsAndDesktopClients"]
  },
  "grantControls": { "operator": "OR", "builtInControls": ["mfa", "compliantDevice"] }
}
该 JSON 示例定义了一个启用状态的策略,要求指定用户组在访问工作区应用时必须使用合规设备或完成多因素认证(MFA),增强了访问安全性。

4.3 切换用户身份并验证资源访问权限

在多用户系统中,切换身份是验证权限控制机制是否健全的关键操作。通过模拟不同角色的用户会话,可准确评估资源访问策略的有效性。
使用 su 命令切换用户
su - alice
# 输入目标用户密码后切换至 alice 的会话环境
该命令将当前会话切换为用户 alice 的完整登录环境(包括其主目录与环境变量),适用于需要完整上下文的权限测试场景。
验证文件访问权限
  • 读取受保护配置文件:/etc/app/config.yaml
  • 尝试写入日志目录:/var/log/app/
  • 执行特权脚本:/opt/admin/maintenance.sh
每项操作的结果反映当前用户所拥有的实际权限边界。
权限检测流程图
[当前用户] → {是否有权限?} —否→ [拒绝访问] ↓是 [执行操作] → [记录审计日志]

4.4 清理本地凭据缓存与旧令牌残留

在多环境切换或凭据更新后,本地系统可能残留过期的认证信息,导致权限异常或访问失败。及时清理缓存是保障安全与连贯性的关键步骤。
常见凭据存储位置
  • ~/.aws/credentials:AWS CLI 凭据文件
  • ~/.azure/accessTokens.json:Azure 访问令牌缓存
  • ~/.kube/config:Kubernetes 集群认证配置
清除 Git 凭据缓存示例

# 清除 macOS 钥匙串中的 Git 凭据
git credential-osxkeychain erase << EOF
host=github.com
protocol=https
EOF
该命令通过标准输入触发凭证清除机制,指定主机和协议后,系统将从钥匙串中移除对应条目,防止旧令牌被误用。
自动化清理脚本建议
定期执行清理任务可降低安全风险,尤其适用于临时凭证频繁轮换的 CI/CD 环境。

第五章:构建可持续的安全开发身份治理体系

统一身份认证与细粒度授权
现代应用系统需整合OAuth 2.0与OpenID Connect,实现跨服务的身份一致性。通过引入基于角色的访问控制(RBAC)与属性基加密(ABE),可动态分配权限。例如,在微服务架构中部署SPIFFE身份框架,确保每个服务拥有唯一且可验证的身份证书。
  • 使用JWT携带用户身份与权限声明
  • 集成LDAP或Active Directory实现集中式用户管理
  • 实施最小权限原则,定期审计权限分配
自动化策略执行与合规监控
在CI/CD流水线中嵌入策略即代码(Policy as Code),利用OPA(Open Policy Agent)对部署请求进行实时校验。以下为Kubernetes准入控制中验证JWT签发者的策略示例:
package authz

default allow = false

allow {
    input.token.iss == "https://identity.corp.com"
    input.token.exp > time.now_ns() / 1000000000
    "admin" == input.token.roles[_]
}
持续风险评估与自适应响应
部署用户与实体行为分析(UEBA)系统,采集登录时间、IP地理位置、设备指纹等信号。当检测到异常行为(如非工作时间从境外IP登录),自动触发多因素认证或会话中断。
风险等级响应动作触发条件
记录日志常规办公时间登录
要求MFA验证新设备首次访问
冻结会话并告警多次失败后成功登录
用户注册 → 身份验证 → 权限分配 → 行为监控 → 风险评分 → 动态调整
<think> 我们被要求回答如何在ASP.NET 4.8项目中集成Microsoft Entra ID(原名Azure AD)。根据提供的引用,虽然引用主要针对ASP.NET Core,但我们可以结合引用中的概念和一般性知识来回答。注意:ASP.NET 4.8(即传统的ASP.NET,非Core)的集成方式与ASP.NET Core有所不同。 在ASP.NET 4.8中,我们可以使用Owin中间件来集成Microsoft Entra ID。主要步骤包括: 1. 在Azure门户中注册应用程序。 2. 在项目中安装必要的NuGet包(如Microsoft.Owin.Security.OpenIdConnect, Microsoft.Owin.Security.Cookies等)。 3. 配置Owin启动类,设置OpenID Connect认证中间件。 具体步骤: ### 1. 在Azure门户中注册应用程序 - 登录Azure门户,进入Microsoft Entra ID(或Azure AD)。 - 创建新注册:提供名称,选择支持的账户类型(例如,仅限组织目录中的账户)。 - 注册后,记录应用程序(客户端)ID和目录(租户)ID。 - 在“证书和密码”部分,可以创建客户端密码(如果需要,例如守护程序场景)或上传证书。 - 在“重定向URI”中,添加应用程序登录后重定向的URI(例如:`https://localhost:44300/`,具体端口根据项目)。 ### 2. 创建项目并安装NuGet包 创建一个ASP.NET 4.8项目(例如MVC或Web Forms),然后通过NuGet安装以下包: - Microsoft.Owin.Host.SystemWeb - Microsoft.Owin.Security - Microsoft.Owin.Security.Cookies - Microsoft.Owin.Security.OpenIdConnect - Microsoft.IdentityModel.Protocols.OpenIdConnect ### 3. 配置Owin启动类 在项目中添加一个Owin启动类(通常命名为`Startup.cs`),并配置认证中间件。 ```csharp using Microsoft.Owin; using Owin; using Microsoft.Owin.Security; using Microsoft.Owin.Security.Cookies; using Microsoft.Owin.Security.OpenIdConnect; using Microsoft.IdentityModel.Protocols; using System.Configuration; using System.Threading.Tasks; [assembly: OwinStartup(typeof(YourNamespace.Startup))] namespace YourNamespace { public class Startup { // 从配置文件中读取设置 private readonly string clientId = ConfigurationManager.AppSettings["ClientId"]; private readonly string tenantId = ConfigurationManager.AppSettings["TenantId"]; private readonly string redirectUri = ConfigurationManager.AppSettings["RedirectUri"]; private readonly string authority = "https://login.microsoftonline.com/{0}/v2.0"; public void Configuration(IAppBuilder app) { // 设置Cookie认证 app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType); app.UseCookieAuthentication(new CookieAuthenticationOptions()); // 配置OpenID Connect认证 app.UseOpenIdConnectAuthentication(new OpenIdConnectAuthenticationOptions { ClientId = clientId, Authority = string.Format(authority, tenantId), RedirectUri = redirectUri, PostLogoutRedirectUri = redirectUri, Scope = "openid email profile", // 根据需要添加其他范围 ResponseType = "id_token", // 隐式流返回id_token TokenValidationParameters = new Microsoft.IdentityModel.Tokens.TokenValidationParameters { // 验证令牌的颁发者 ValidIssuer = $"https://sts.windows.net/{tenantId}/" }, Notifications = new OpenIdConnectAuthenticationNotifications { AuthenticationFailed = context => { context.HandleResponse(); context.Response.Redirect("/Error?message=" + context.Exception.Message); return Task.FromResult(0); } } }); } } } ``` ### 4. 修改Web.config 在Web.config的`<appSettings>`中添加配置: ```xml <add key="ClientId" value="你的应用程序(客户端)ID" /> <add key="TenantId" value="你的目录(租户)ID" /> <add key="RedirectUri" value="https://localhost:44300/" /> ``` ### 5. 添加登录和注销功能 在需要的地方(例如在视图或控制器中)添加登录和注销的链接。 登录:可以触发挑战,例如在控制器中: ```csharp public void SignIn() { if (!Request.IsAuthenticated) { // 发送OpenID Connect登录请求 HttpContext.GetOwinContext().Authentication.Challenge( new AuthenticationProperties { RedirectUri = "/" }, OpenIdConnectAuthenticationDefaults.AuthenticationType); } } ``` 注销:同样在控制器中: ```csharp public void SignOut() { // 注销本地Cookie并重定向到Microsoft Entra ID注销端点 HttpContext.GetOwinContext().Authentication.SignOut( OpenIdConnectAuthenticationDefaults.AuthenticationType, CookieAuthenticationDefaults.AuthenticationType); } ``` ### 6. 授权 可以使用`[Authorize]`特性来保护控制器或方法。对于基于角色的授权,可以在Microsoft Entra ID中定义应用角色,并将用户分配给这些角色。然后在令牌中会返回角色声明,然后就可以使用`[Authorize(Roles="Admin")]`这样的特性。 注意:在传统ASP.NET中,需要将角色声明转换为ASP.NET能够识别的角色类型。可以在`Global.asax`的`Application_Start`中设置: ```csharp System.Web.Helpers.AntiForgeryConfig.UniqueClaimTypeIdentifier = "http://schemas.microsoft.com/identity/claims/objectidentifier"; ``` 然后在令牌验证时,将角色声明转换为`ClaimsIdentity`的角色声明。通常,在OpenID Connect中间件中,我们可以通过设置`TokenValidationParameters.RoleClaimType`来指定角色声明类型。 ### 注意事项 - 上述示例使用隐式流(返回id_token)进行用户登录。如果应用还需要访问其他API,可能需要使用授权码流(并添加`code`响应类型)以获取访问令牌。 - 在生产环境中,应使用HTTPS,并确保重定向URI已正确注册。 以上是在ASP.NET 4.8中集成Microsoft Entra ID进行身份验证的基本步骤。具体细节可能需要根据实际需求调整。 §§相关问题§§ 1. 在ASP.NET 4.8中集成Microsoft Entra ID时,如何处理角色授权? 2. 如何在Microsoft Entra ID中为应用程序配置应用角色? 3. 在ASP.NET 4.8中,如何获取用户的访问令牌以调用其他受保护的API? </think> ### 在 ASP.NET 4.8 中集成 Microsoft Entra ID 的步骤 #### 1. **在 Azure 门户注册应用程序** - 登录 [Azure 门户](https://portal.azure.com),进入 **Microsoft Entra ID**(原 Azure AD) - 选择 **应用注册** → **新注册** - 填写应用名称(如 `MyAspNetApp`),选择 **账户类型**(如 "仅此组织目录") - 设置 **重定向 URI**:选择 **Web** 类型,输入 `https://localhost:{端口}/signin-oidc`(端口需与本地 IIS Express 一致) - 记录 **应用程序(客户端)ID** 和 **目录(租户)ID**[^3] #### 2. **配置项目 NuGet 包** 在 Visual Studio 中安装必要包: ```powershell Install-Package Microsoft.Owin.Security.OpenIdConnect Install-Package Microsoft.Owin.Security.Cookies Install-Package Microsoft.Owin.Host.SystemWeb ``` #### 3. **添加 OWIN 启动配置** 创建 `Startup.cs` 文件,配置认证中间件: ```csharp using Microsoft.Owin; using Owin; using Microsoft.Owin.Security; using Microsoft.Owin.Security.Cookies; using Microsoft.Owin.Security.OpenIdConnect; [assembly: OwinStartup(typeof(MyNamespace.Startup))] namespace MyNamespace { public class Startup { public void Configuration(IAppBuilder app) { // Cookie 认证设置 app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType); app.UseCookieAuthentication(new CookieAuthenticationOptions()); // OpenID Connect 配置 var clientId = "你的客户端ID"; var tenantId = "你的租户ID"; var authority = $"https://login.microsoftonline.com/{tenantId}/v2.0"; app.UseOpenIdConnectAuthentication(new OpenIdConnectAuthenticationOptions { ClientId = clientId, Authority = authority, RedirectUri = "https://localhost:44300/", // 匹配 Azure 设置 PostLogoutRedirectUri = "https://localhost:44300/", Scope = "openid profile email", ResponseType = "id_token", TokenValidationParameters = new Microsoft.IdentityModel.Tokens.TokenValidationParameters { ValidateIssuer = true, ValidIssuer = authority }, Notifications = new OpenIdConnectAuthenticationNotifications() }); } } } ``` #### 4. **保护路由** 在控制器或 Action 上添加 `[Authorize]` 特性: ```csharp [Authorize] public class SecureController : Controller { // 仅认证用户可访问 public ActionResult Index() { var userName = User.Identity.Name; return View(); } } ``` #### 5. **配置 Web.config** 添加以下配置节: ```xml <system.web> <authentication mode="None" /> <!-- 禁用传统认证 --> </system.web> <appSettings> <add key="ida:ClientId" value="你的客户端ID" /> <add key="ida:TenantId" value="你的租户ID" /> </appSettings> ``` #### 6. **处理登入/登出** 添加登录按钮(视图示例): ```html @if (!User.Identity.IsAuthenticated) { <a href="/Account/Login">使用 Microsoft Entra ID 登录</a> } else { <a href="/Account/Logout">注销</a> } ``` 控制器方法: ```csharp public class AccountController : Controller { public void Login() { if (!Request.IsAuthenticated) { HttpContext.GetOwinContext().Authentication.Challenge( new AuthenticationProperties { RedirectUri = "/" }, OpenIdConnectAuthenticationDefaults.AuthenticationType); } } public void Logout() { HttpContext.GetOwinContext().Authentication.SignOut( OpenIdConnectAuthenticationDefaults.AuthenticationType, CookieAuthenticationDefaults.AuthenticationType); } } ``` #### 7. **测试与部署** - 本地测试:按 F5 启动调试,点击登录按钮应跳转至 Microsoft 登录页 - 生产部署: 1. 在 Azure 应用注册中更新 **重定向 URI**(如 `https://生产域名/signin-oidc`) 2. 发布项目到 IIS 服务器 3. 确保服务器时间与 Azure 时间同步 > **注意**:ASP.NET 4.x 使用 OWIN 中间件集成,与 ASP.NET Core 的配置方式不同[^1][^2]。若需高级功能(如角色授权),需在 Azure 门户配置 **应用角色** 并在令牌中返回角色声明[^3]。 --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值