MCP-安全(entra)

Java使用Microsoft Entra微软 SSO 认证接入 sp(服务提供这者)在首页做一个 button 按钮只进行 SAML 的 SSO 验证登录=》点击按钮,获取 ldp(微软)的动态访问 url=》验证账密,通过后调用 sp 提供的回调接口将邮箱信息传过来=》 sp(服务提供者)拿到邮箱获取用户的信息,进行验证,成功后,重定向到sp首页将 cookie进行写入。Microsoft Entra ID 还可帮助他们访问你的企业 Intranet 上的应用等内部资源,以及任何为你自己的组织开发的云应用。是基于云的标识和访问管理服务,可帮助员工访问外部资源。 阅读详情

保护 AI 工作流程:模型上下文协议服务器的 Entra ID 身份验证

介绍

保护模型上下文协议 (MCP) 服务器的安全与锁好家门一样重要。保持 MCP 服务器开放会导致您的工具和数据遭受未经授权的访问,从而导致安全漏洞。Microsoft Entra ID 提供强大的基于云的身份和访问管理解决方案,帮助确保只有授权用户和应用程序才能与您的 MCP 服务器交互。在本节中,您将学习如何使用 Entra ID 身份验证保护您的 AI 工作流。

学习目标

读完本节后,您将能够:

  • 了解保护 MCP 服务器的重要性。
  • 解释 Microsoft Entra ID 和 OAuth 2.0 身份验证的基础知识。
  • 认识到公共客户和机密客户之间的区别。
  • 在本地(公共客户端)和远程(机密客户端)MCP 服务器场景中实现 Entra ID 身份验证。
  • 在开发 AI 工作流程时应用安全最佳实践。

安全性和 MCP

正如您不会不锁门一样,您也不应该将您的 MCP 服务器开放给任何人访问。保护您的 AI 工作流程对于构建强大、可靠且安全的应用程序至关重要。本章将向您介绍如何使用 Microsoft Entra ID 保护您的 MCP 服务器,确保只有授权用户和应用程序才能与您的工具和数据交互。

为什么安全对于 MCP 服务器至关重要

假设您的 MCP 服务器上有一个可以发送电子邮件或访问客户数据库的工具。不安全的服务器意味着任何人都有可能使用该工具,从而导致未经授权的数据访问、垃圾邮件或其他恶意活动。

通过实施身份验证,您可以确保对服务器的每个请求都经过验证,从而确认发出请求的用户或应用程序的身份。这是保护 AI 工作流程安全的第一步,也是最关键的一步。

Microsoft Entra ID 简介

Microsoft Entra ID是一项基于云的身份和访问管理服务。您可以将其视为应用程序的通用安全卫士。它负责处理验证用户身份(身份验证)和确定用户权限(授权)的复杂流程。

通过使用 Entra ID,您可以:

  • 为用户启用安全登录。
  • 保护 API 和服务。
  • 从中心位置管理访问策略。

对于 MCP 服务器,Entra ID 提供了一个强大且广受信赖的解决方案来管理谁可以访问您的服务器的功能。


了解魔法:Entra ID 身份验证的工作原理

Entra ID 使用OAuth 2.0等开放标准来处理身份验证。虽然细节可能很复杂,但核心概念很简单,可以用类比来理解。

OAuth 2.0 简介:Valet Key

可以将 OAuth 2.0 想象成您的汽车代客泊车服务。当您到达餐厅时,您无需将主钥匙交给代客泊车员。相反,您需要提供一把权限有限的代客泊车钥匙——它可以启动汽车并锁上车门,但不能打开后备箱或杂物箱。

在这个类比中:

  • 您是用户。
  • 您的汽车是MCP 服务器,拥有宝贵的工具和数据。
  • Valet是Microsoft Entra ID。
  • 停车服务员是MCP客户端(尝试访问服务器的应用程序)。
  • Valet Key是访问令牌。

访问令牌是您登录后,MCP 客户端从 Entra ID 收到的安全文本字符串。客户端每次请求时都会将此令牌提交给 MCP 服务器。服务器可以验证令牌,以确保请求合法,并且客户端拥有必要的权限,而这一切都无需处理您的实际凭证(例如密码)。

身份验证流程

该过程的实际运作方式如下:

Microsoft 身份验证库 (MSAL) 简介

在深入研究代码之前,有必要介绍一下您将在示例中看到的一个关键组件:Microsoft 身份验证库 (MSAL)。

MSAL 是由 Microsoft 开发的一个库,它使开发人员能够更轻松地处理身份验证。您无需编写所有复杂的代码来处理安全令牌、管理登录和刷新会话,MSAL 会处理这些繁重的工作。

强烈建议使用 MSAL 之类的库,因为:

  • 它是安全的:它实施行业标准协议和安全最佳实践,降低了代码中出现漏洞的风险。
  • 它简化了开发:它抽象了 OAuth 2.0 和 OpenID Connect 协议的复杂性,允许您仅用几行代码即可为您的应用程序添加强大的身份验证。
  • 它是维护的: Microsoft 积极维护和更新 MSAL,以应对新的安全威胁和平台变化。

MSAL 支持多种语言和应用程序框架,包括 .NET、JavaScript/TypeScript、Python、Java、Go 以及 iOS 和 Android 等移动平台。这意味着你可以在整个技术堆栈中使用相同的一致身份验证模式。

要了解有关 MSAL 的更多信息,可以查看官方MSAL 概述文档。


使用 Entra ID 保护您的 MCP 服务器:分步指南

现在,让我们逐步了解如何stdio使用 Entra ID 保护本地 MCP 服务器(通过 进行通信的服务器)。此示例使用公共客户端,适用于在用户计算机上运行的应用程序,例如桌面应用程序或本地开发服务器。

场景 1:保护本地 MCP 服务器(使用公共客户端)

在这个场景中,我们将介绍一个本地运行的 MCP 服务器,它通过 进行通信stdio,并使用 Entra ID 对用户进行身份验证,然后才允许访问其工具。该服务器将包含一个工具,用于从 Microsoft Graph API 获取用户的个人资料信息。

1. 在Entra ID中设置应用程序

在编写任何代码之前,您需要在 Microsoft Entra ID 中注册您的应用程序。这会告知 Entra ID 您的应用程序,并授予其使用身份验证服务的权限。

  1. 导航到Microsoft Entra 门户。
  2. 转到应用程序注册并单击新注册。
  3. 为您的应用程序命名(例如“我的本地 MCP 服务器”)。
  4. 对于支持的帐户类型,请选择仅限此组织目录中的帐户。
  5. 对于此示例,您可以将重定向 URI留空。
  6. 单击“注册”。

注册后,请记下应用程序(客户端)ID和目录(租户)ID。您将在代码中需要用到这些信息。

2. 代码:解析

让我们看一下处理身份验证的关键代码部分。此示例的完整代码可在mcp-auth-servers GitHub 仓库的Entra ID - Local - WAM文件夹中找到。

AuthenticationService.cs

该类负责处理与Entra ID的交互。

  • CreateAsync:此方法从 MSAL(Microsoft 身份验证库)初始化PublicClientApplication。它使用您的应用程序的clientId和进行配置tenantId。
  • WithBroker:这使得可以使用代理(如 Windows Web 帐户管理器),从而提供更安全、更无缝的单点登录体验。
  • AcquireTokenAsync:这是核心方法。它首先尝试以静默方式获取令牌(这意味着如果用户已经拥有有效会话,则无需再次登录)。如果无法获取静默令牌,它将提示用户以交互方式登录。
// Simplified for clarity
public static async Task<AuthenticationService> CreateAsync(ILogger<AuthenticationService> logger)
{
    var msalClient = PublicClientApplicationBuilder
        .Create(_clientId) // Your Application (client) ID
        .WithAuthority(AadAuthorityAudience.AzureAdMyOrg)
        .WithTenantId(_tenantId) // Your Directory (tenant) ID
        .WithBroker(new BrokerOptions(BrokerOptions.OperatingSystems.Windows))
        .Build();

    // ... cache registration ...

    return new AuthenticationService(logger, msalClient);
}

public async Task<string> AcquireTokenAsync()
{
    try
    {
        // Try silent authentication first
        var accounts = await _msalClient.GetAccountsAsync();
        var account = accounts.FirstOrDefault();

        AuthenticationResult? result = null;

        if (account != null)
        {
            result = await _msalClient.AcquireTokenSilent(_scopes, account).ExecuteAsync();
        }
        else
        {
            // If no account, or silent fails, go interactive
            result = await _msalClient.AcquireTokenInteractive(_scopes).ExecuteAsync();
        }

        return result.AccessToken;
    }
    catch (Exception ex)
    {
        _logger.LogError(ex, "An error occurred while acquiring the token.");
        throw; // Optionally rethrow the exception for higher-level handling
    }
}

Program.cs

这是设置 MCP 服务器并集成身份验证服务的地方。

  • AddSingleton<AuthenticationService>:这会向依赖注入容器注册AuthenticationService,因此应用程序的其他部分(如我们的工具)可以使用它。
  • GetUserDetailsFromGraph工具:此工具需要一个 实例AuthenticationService。在执行任何操作之前,它会调用authService.AcquireTokenAsync()来获取有效的访问令牌。如果身份验证成功,它会使用该令牌调用 Microsoft Graph API 并获取用户的详细信息。
// Simplified for clarity
[McpServerTool(Name = "GetUserDetailsFromGraph")]
public static async Task<string> GetUserDetailsFromGraph(
    AuthenticationService authService)
{
    try
    {
        // This will trigger the authentication flow
        var accessToken = await authService.AcquireTokenAsync();

        // Use the token to create a GraphServiceClient
        var graphClient = new GraphServiceClient(
            new BaseBearerTokenAuthenticationProvider(new TokenProvider(authService)));

        var user = await graphClient.Me.GetAsync();

        return System.Text.Json.JsonSerializer.Serialize(user);
    }
    catch (Exception ex)
    {
        return $"Error: {ex.Message}";
    }
}
3. 一切如何协同工作
  1. 当 MCP 客户端尝试使用该GetUserDetailsFromGraph工具时,该工具首先调用AcquireTokenAsync。
  2. AcquireTokenAsync触发 MSAL 库检查有效令牌。
  3. 如果没有找到令牌,MSAL 将通过代理提示用户使用他们的 Entra ID 帐户登录。
  4. 一旦用户登录,Entra ID 就会发出访问令牌。
  5. 该工具接收令牌并使用它来安全调用 Microsoft Graph API。
  6. 用户的详细信息返回给 MCP 客户端。

此过程可确保只有经过身份验证的用户才能使用该工具,从而有效地保护您的本地 MCP 服务器。

场景 2:保护远程 MCP 服务器(使用机密客户端)

当您的 MCP 服务器运行在远程计算机(例如云服务器)上并通过 HTTP Streaming 等协议进行通信时,安全要求会有所不同。在这种情况下,您应该使用保密客户端和授权码流程。这是一种更安全的方法,因为应用程序的机密信息永远不会暴露给浏览器。

此示例使用基于 TypeScript 的 MCP 服务器,该服务器使用 Express.js 处理 HTTP 请求。

1. 在Entra ID中设置应用程序

Entra ID 中的设置与公共客户端类似,但有一个主要区别:您需要创建客户端密钥。

  1. 导航到Microsoft Entra 门户。
  2. 在您的应用程序注册中,转到“证书和机密”选项卡。
  3. 单击“新建客户端密钥”,为其添加描述,然后单击“添加”。
  4. 重要提示:请立即复制密钥值。您将无法再次看到它。
  5. 您还需要配置重定向 URI。转到“身份验证”选项卡,点击“添加平台”,选择“Web”,然后输入应用程序的重定向 URI(例如http://localhost:3001/auth/callback)。

⚠️重要安全说明:对于生产应用程序,Microsoft 强烈建议使用无密钥身份验证方法(例如托管标识或工作负载联合身份验证),而不是客户端密钥。客户端密钥存在安全风险,因为它们可能被泄露或泄露。托管标识无需在代码或配置中存储凭据,从而提供了一种更安全的方法。

有关托管标识及其实现方式的详细信息,请参阅Azure 资源托管标识概述。

2. 代码:解析

此示例使用基于会话的方法。当用户进行身份验证时,服务器会将访问令牌和刷新令牌存储在会话中,并向用户提供会话令牌。此会话令牌随后将用于后续请求。此示例的完整代码可在mcp-auth-servers GitHub 仓库的“Entra ID - Confidential”客户端文件夹中找到。

Server.ts

该文件设置 Express 服务器和 MCP 传输层。

  • requireBearerAuth:这是保护/sse和端点的中间件。它会检查请求标头/message中是否存在有效的持有者令牌。Authorization
  • EntraIdServerAuthProvider:这是一个实现该McpServerAuthorizationProvider接口的自定义类。它负责处理 OAuth 2.0 流程。
  • /auth/callback:此端点负责在用户身份验证后处理来自 Entra ID 的重定向。它将授权码交换为访问令牌和刷新令牌。
// Simplified for clarity
const app = express();
const { server } = createServer();
const provider = new EntraIdServerAuthProvider();

// Protect the SSE endpoint
app.get("/sse", requireBearerAuth({
  provider,
  requiredScopes: ["User.Read"]
}), async (req, res) => {
  // ... connect to the transport ...
});

// Protect the message endpoint
app.post("/message", requireBearerAuth({
  provider,
  requiredScopes: ["User.Read"]
}), async (req, res) => {
  // ... handle the message ...
});

// Handle the OAuth 2.0 callback
app.get("/auth/callback", (req, res) => {
  provider.handleCallback(req.query.code, req.query.state)
    .then(result => {
      // ... handle success or failure ...
    });
});

Tools.ts

该文件定义了 MCP 服务器提供的工具。该getUserDetails工具与上例中的工具类似,但它从会话中获取访问令牌。

// Simplified for clarity
server.setRequestHandler(CallToolRequestSchema, async (request) => {
  const { name } = request.params;
  const context = request.params?.context as { token?: string } | undefined;
  const sessionToken = context?.token;

  if (name === ToolName.GET_USER_DETAILS) {
    if (!sessionToken) {
      throw new AuthenticationError("Authentication token is missing or invalid. Ensure the token is provided in the request context.");
    }

    // Get the Entra ID token from the session store
    const tokenData = tokenStore.getToken(sessionToken);
    const entraIdToken = tokenData.accessToken;

    const graphClient = Client.init({
      authProvider: (done) => {
        done(null, entraIdToken);
      }
    });

    const user = await graphClient.api('/me').get();

    // ... return user details ...
  }
});

auth/EntraIdServerAuthProvider.ts

此类处理以下逻辑:

  • 将用户重定向到 Entra ID 登录页面。
  • 将授权码交换为访问令牌。
  • 将令牌存储在中tokenStore。
  • 当访问令牌过期时刷新它。
3. 一切如何协同工作
  1. 当用户首次尝试连接到 MCP 服务器时,requireBearerAuth中间件将发现他们没有有效会话,并将他们重定向到 Entra ID 登录页面。
  2. 用户使用其 Entra ID 帐户登录。
  3. /auth/callbackEntra ID使用授权码将用户重定向回端点。
  4. 服务器用该代码交换访问令牌和刷新令牌,存储它们,并创建发送给客户端的会话令牌。
  5. 客户端现在可以在Authorization标头中使用此会话令牌来对 MCP 服务器发出所有未来请求。
  6. 当调用该getUserDetails工具时,它使用会话令牌查找 Entra ID 访问令牌,然后使用该令牌调用 Microsoft Graph API。

此流程比公共客户端流程更复杂,但对于面向互联网的端点而言是必需的。由于远程 MCP 服务器可通过公共互联网访问,因此需要更强大的安全措施来防范未经授权的访问和潜在的攻击。

安全最佳实践

  • 始终使用 HTTPS:加密客户端和服务器之间的通信以保护令牌不被拦截。
  • 实施基于角色的访问控制 (RBAC):不仅要检查用户是否已通过身份验证,还要检查他们被授权执行哪些操作。您可以在 Entra ID 中定义角色,并在 MCP 服务器中检查这些角色。
  • 监控和审计:记录所有身份验证事件,以便您可以检测并应对可疑活动。
  • 处理速率限制和节流:Microsoft Graph 和其他 API 实施速率限制以防止滥用。在 MCP 服务器中实施指数退避和重试逻辑,以妥善处理 HTTP 429(请求过多)响应。考虑缓存频繁访问的数据以减少 API 调用。
  • 安全令牌存储: 安全地存储访问令牌和刷新令牌。对于本地应用程序,请使用系统的安全存储机制。对于服务器应用程序,请考虑使用加密存储或安全密钥管理服务,例如 Azure Key Vault。
  • 令牌过期处理:访问令牌的有效期有限。使用刷新令牌实现自动令牌刷新,无需重新身份验证即可保持无缝的用户体验。
  • 考虑使用 Azure API 管理:虽然直接在 MCP 服务器中实现安全机制可以实现更细粒度的控制,但像 Azure API 管理这样的 API 网关可以自动处理许多安全问题,包括身份验证、授权、速率限制和监控。它们在客户端和 MCP 服务器之间提供了一个集中式安全层。有关将 API 网关与 MCP 结合使用的详细信息,请参阅Azure API 管理:适用于 MCP 服务器的身份验证网关。

关键要点

  • 保护您的 MCP 服务器对于保护您的数据和工具至关重要。
  • Microsoft Entra ID 为身份验证和授权提供了强大且可扩展的解决方案。
  • 对本地应用程序使用公共客户端,对远程服务器使用机密客户端。
  • 授权码流程是Web 应用程序最安全的选择。

锻炼

  1. 想想你可能会构建一个 MCP 服务器。它是本地服务器还是远程服务器?
  2. 根据您的回答,您会使用公共客户端还是机密客户端?
  3. 您的 MCP 服务器需要什么权限才能对 Microsoft Graph 执行操作?

实践练习

练习 1:在 Entra ID 中注册应用程序

导航到 Microsoft Entra 门户。为您的 MCP 服务器注册一个新的应用程序。记录应用程序(客户端)ID 和目录(租户)ID。

练习 2:保护本地 MCP 服务器(公共客户端)

  • 按照代码示例集成 MSAL(Microsoft 身份验证库)进行用户身份验证。
  • 通过调用从 Microsoft Graph 获取用户详细信息的 MCP 工具来测试身份验证流程。

练习 3:保护远程 MCP 服务器(机密客户端)

  • 在 Entra ID 中注册一个机密客户端并创建客户端机密。
  • 配置您的 Express.js MCP 服务器以使用授权码流。
  • 测试受保护的端点并确认基于令牌的访问。

练习 4:应用安全最佳实践

  • 为您的本地或远程服务器启用 HTTPS。
  • 在服务器逻辑中实现基于角色的访问控制(RBAC)。
  • 添加令牌过期处理和安全令牌存储。

资源

  1. MSAL 概述文档
    了解 Microsoft 身份验证库 (MSAL) 如何跨平台实现安全令牌获取:
    Microsoft Learn 上的 MSAL 概述

  2. Azure-Samples/mcp-auth-servers GitHub 存储库
    演示身份验证流程的 MCP 服务器参考实现:
    GitHub 上的 Azure-Samples/mcp-auth-servers

  3. Azure 资源托管标识概述
    了解如何使用系统或用户分配的托管标识消除机密:
    Microsoft Learn 上的托管标识概述

  4. Azure API 管理:MCP 服务器的身份验证
    网关 深入了解如何使用 APIM 作为 MCP 服务器的安全 OAuth2 网关:
    Azure API 管理 MCP 服务器的身份验证网关

  5. Microsoft Graph 权限参考
    Microsoft Graph 的委派和应用程序权限的完整列表:
    Microsoft Graph 权限参考

Mendix 使用OIDC组件实现SSO|Azure Microsoft Entra ID 集成(原名:AD) SSO 按钮设置到OIDC 的 Login_Web_Button 的页面中,用于选择SSO的身份认证服务。 阅读详情

相关推荐

国产数据库PolarDB-X实战:5分钟快速搭建本地开发环境(附Docker一键部署脚本)

本文提供了一份详尽的国产分布式数据库PolarDB-X本地开发环境搭建指南。通过Docker Compose一键部署脚本,开发者可在5分钟内快速启动一个功能完整的PolarDB-X实例,涵盖环境准备、脚本解析、连接验证及日常维护,极大简化了国产数据库的入门和体验流程。

weixin_29246195的博客 358

解决Headscale中EntraID OIDC用户ACL策略失效的5个关键步骤

你是否在使用Headscale集成Microsoft EntraID(旧称Azure AD)的OpenID Connect(OIDC)认证后,遇到访问控制列表(ACL)策略不生效的问题?用户明明通过了EntraID认证,却无法按照预期访问资源?本文将通过5个关键步骤,帮助你快速定位并解决这一常见问题,确保ACL策略准确生效。 读完本文后,你将能够: - 理解EntraID OIDC与Headsc

gitblog_00384的博客 392

手把手教程:使用C#实现工业上位机开发

深入讲解如何利用C#进行上位机开发,涵盖通信协议与界面设计,助力掌握工业自动化核心技能。结合实际案例,让上位机开发更高效直观。

weixin_32480007的博客 2065

简单介绍Spring Security 的认证机制和授权机制

Spring Security 的认证机制提供了一个强大而灵活的框架,支持多种认证方式,并允许通过自定义扩展来满足各种安全需求。通过正确配置和使用Spring Security,开发者可以为应用程序建立一个可靠的认证和安全模型。Spring Security的授权机制提供了灵活强大的访问控制能力,从简单的基于URL的安全规则到复杂的方法级安全和ACL。通过组合使用这些授权策略,开发者可以构建出既安全又灵活的应用程序,确保只有授权的用户才能访问敏感资源。

www_tlj的专栏 1816

API安全攻防实战:从信息搜集到漏洞利用的完整路径

本文详细解析了API安全攻防实战的全过程,从信息搜集到漏洞利用,涵盖了渗透测试的核心技巧和工具使用。通过真实案例展示如何发现和利用API漏洞,如HTTP方法滥用、内容类型转换攻击等,并提供企业级防御策略和测试心得,帮助安全研究人员提升API安全防护能力。

weixin_30394981的博客 434

三菱 FX5U PLC 4轴程序 控制松下伺服3个, 步进电机一个

三菱 FX5U PLC 4轴程序。 控制松下伺服3个, 步进电机一个, 四轴自动堆垛码垛设备程序, 回原点动作用专用的原点回归指令写的, 手动运行用三菱相对定位指令写的 , 自动运行用绝对定位指令写的取料运行, 表格定位写的自动放料运行, 设备各种报警异常都有写出 程序每一步都有注释。 包括PLC程序、显控触摸屏 程序、松下伺服驱动器接线图。 程序内都有IO注释 编号:4816635519484681汇美0808 ...

m0_68069172的博客 3381

使用Kiota工具生成WebApi的代理类,以及接口调用的简单体验

前言 当前.NET环境下,生成WebApi代理类的工具已经有很多选择了,比如OpenApi Generator,NSwag和Refitter等,不同的工具生成的代码风格以及实现方式略有不同,比如Refitter生成的客户端是Refit风格. 本人比较喜欢Refit风格的标注风格因此还是比较喜欢使用Refitter的,TA生成的代码风格如下: [Headers("Accept: applicati...

weixin_34675606的博客 410

用STM32的SPI模式2搞定SSI绝对值编码器通信(附完整代码与避坑点)

本文详细解析了如何使用STM32的SPI模式2实现SSI绝对值编码器通信,包括硬件设计、SPI配置、数据处理算法及稳定性优化技巧。通过完整的代码示例和避坑指南,帮助工程师解决时序匹配、数据解析等常见问题,提升工业自动化系统中的编码器通信可靠性。

weixin_27252001的博客 265

Qwen3-30B-A3B-Instruct-2507-GGUF搭建OpenAI兼容API:6步部署本地大模型服务完全教程

本教程带你基于 **Qwen3-30B-A3B-Instruct-2507-GGUF** 模型文件,使用 `llama.cpp` 的 `llama-server` 在本地搭建一个 **OpenAI 兼容 API** 服务。全程只需 **6 步**即可完成本地大模型部署:数据不出内网、调用完全免费、接口与 OpenAI 格式一致,现有代码几乎不用改就能直接接入。 ## 一、先认识这个模型:为什么它

gitblog_00806的博客 1094

配置oem 13c以监控管理数据库

使用oem13c监控数据库

雅冰石的专栏 1811

lammps教程:聚合物压缩,避免“bond atoms missing”

如果使用ms建模,聚合物的链会伸出到盒子外面,在导出data文件后,盒子外面的原子被周期性算法折叠进盒子对面,这就造成了边界附近的bond原子可能被分布到了盒子的两侧。并且,这个data文件不能使用npt系综进行压缩,npt系综必须使用周期性边界,在压缩时,bond原子同样会移动到对面的边界。所以,最好的解决办法是使用一个反射墙墙进行压缩,设置一个反射墙墙既可以实现压缩效果,也可以组织原子跨越box边界移动到对面。解决这个问题的原则只有一个:导出data时确保所有的bond原子没有跨越边界。

lammps_jiayou的博客 3819

mcp-for-beginners 实战:MCP 服务器的企业级安全与多租户架构(PostgreSQL RLS + Azure Entra ID 完整指南)

本指南基于开源课程 mcp-for-beginners 的 Hands-On Lab 02(Security and Multi-Tenancy),系统讲解如何为零售场景的 MCP 服务器构建纵深防御(defense-in-depth)安全体系:从 PostgreSQL Row Level Security(RLS)实现多租户数据隔离,到 Azure Entra ID 的 JWT 认证与基于角色的

gitblog_00264的博客 202

【ComfyUI】【Nunchaku】【diffusers报错解决】秋叶整合包安装 Nunchaku 报错的解决方法

最近在折腾 AI 绘图时,我尝试在秋叶的 ComfyUI 整合包中安装 `ComfyUI-nunchaku` 插件(版本 0.3.3),结果启动后直接报错,提示无法从 `accelerate.utils.memory` 中导入 `clear_device_cache`,让我一度怀疑插件是否兼容。查阅了一堆 issue 和源码之后,总算找到了原因和解决方法。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 1856

基于 PostgreSQL RLS 与 Azure Entra ID 构建 MCP 服务器企业级多租户安全架构:mcp-for-beginners 实战 Lab 02

本篇技术指南围绕 mcp-for-beginners 仓库中 11-MCPServerHandsOnLabs 学习路径的 **Lab 02(Security and Multi-Tenancy)** 展开,完整讲解如何为零售数据分析类 MCP 服务器实现企业级安全与多租户隔离:从 Azure Front Door / Application Gateway 的网络边界防护,到 PostgreSQL

gitblog_00967的博客 220

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Naive UI 快速上手:Vue 3 组件库从安装到主题定制

Naive UI 是一款面向 Vue 3 的 TypeScript 组件库,内置 90 多个组件,无需引入 CSS 文件,并支持整库的主题定制。这篇文章面向前端新手,带你完成安装、跑通第一个页面、看懂常用组件的取舍,并了解如何把界面调成产品的品牌色。 ## 先看 Naive UI 适不适合你的项目 判断是否引入它,主要看你的项目是否满足以下条件: - **技术栈是 Vue 3**:Naive

gitblog_00026的博客 192

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

MCP安全认证终极指南:7天从零到部署的完整实战攻略

Model Context Protocol (MCP) 作为连接AI模型与工具的开放协议,其安全认证机制是保护AI工作流的核心屏障。本指南将通过7天实战路径,帮助你从零掌握MCP安全认证的实施要点,包括Entra ID集成、OAuth 2.1配置、AI特定威胁防护等关键技能,最终实现企业级MCP服务器的安全部署。 ## 🌟 为什么MCP安全认证至关重要 在AI驱动的自动化工作流中,MCP服

gitblog_00379的博客 666

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

CYLTabBarController 集成指南:Lottie 动画、中间凸起按钮与红点角标一次配齐

想让 App 底部那排 Tab 摆脱系统默认样式?CYLTabBarController 是一个 iOS 底部导航栏第三方库,帮你一行代码给 TabBar 换上 Lottie 动画图标,支持中间带"+"号的凸起按钮、内置红点角标,还能动态刷新 Tab 项。下面从场景出发,带你把它接进 Swift 项目。 [![CYLTabBarController 中间凸起按钮与角标效果](https://ra

gitblog_00955的博客 391

视频硬字幕提取指南:用 Video-subtitle-extractor 本地生成 SRT 字幕

Video-subtitle-extractor(VSE)是一款免费开源的视频硬字幕提取工具。它在本地运行深度学习 OCR,把烧录在视频里的字幕识别出来,直接输出 SRT 字幕文件,无需任何第三方 API,视频全程不离开你的电脑。 ## 为什么你需要一个硬字幕提取工具 场景一:你想跟着一部日剧学日语,但字幕烧录在画面上,网上找不到可下载的字幕文件。逐句手打一遍,一集下来要熬半晚,眼睛还酸。

gitblog_01130的博客 248

LinkSwift 网盘直链下载:9 大网盘,装好只要 5 分钟,一键把直链交给你的下载器

网页版下载慢、进度条卡住,想把文件丢给 IDM 或 Aria2 批量下?LinkSwift 是一款网盘直链下载油猴脚本,跑在浏览器里,一键把百度网盘、阿里云盘、夸克网盘等 9 大平台的文件变成真实下载地址。 ## 5 分钟装好脚本,点亮"下载助手"按钮 从拿到仓库到在网盘页面看到按钮,一共三步。第一步,克隆仓库把脚本拿到手: ```bash git clone https://gitcode

gitblog_01147的博客 728

OpenRocket:从 3D 模型火箭设计到六自由度仿真与自动优化的完整实战路径

OpenRocket 是一款免费、功能完整的模型火箭设计与仿真软件,让你在真正动手制作并点火发射之前,就能在计算机上完成设计、六自由度飞行仿真与设计优化。模型火箭爱好者、高校航模与航天社团成员,以及想用一个可视化项目学习数值仿真的新手,都值得重点关注它。 能力速览: - 用内置组件库搭建多级火箭、助推器与载荷舱构型 - 用六自由度仿真引擎(RK4/RK6 积分)解算完整飞行轨迹 - 用自动优化

gitblog_01046的博客 829

5 步跑通 gitness:从源码看懂这个开源 DevOps 平台如何托管代码、流水线与制品

你有没有想过:如果把代码托管、CI/CD 流水线、开发环境和制品仓库这四件事都搬回自己的机器,得搭多少个组件?gitness 就是干这个的——它把 Source Control Management、Pipelines、Gitspaces 托管开发环境和 Artifact Registry 打包进一个 Go 二进制里,而最好的入门方式,不是读文档,而是直接拆它的源码看它是怎么串起来的。 ## 先

gitblog_00120的博客 424

基于 MCP 构建 Microsoft 365 Copilot 声明式 Agent:mcp-m365-agent-expert 实战指南

Microsoft 365 Copilot 声明式 Agent(Declarative Agent)通过配置文件而非代码定义 AI 助手的行为,而 Model Context Protocol(MCP)让 Agent 无需手工声明函数即可接入外部系统与数据。本指南源自当前仓库 [awesome-copilot](https://link.gitcode.com/i/4abed77af319e910

gitblog_00531的博客 421

Python/FastAPI 实现 Claude in Office Bootstrap 端点:Entra ID 鉴权与按员工 RBAC 分发 Skills 和 MCP Servers 全指南

本文围绕 [claude-for-msft-365-install/examples/python-bootstrap](https://link.gitcode.com/i/cfc81d3622b2f18a9b779d56c851f55f) 目录下的参考实现,深入讲解如何用 Python + FastAPI 搭建 Claude in Office 插件的 `/bootstrap` 端点:它负责校

gitblog_00363的博客 4

每日关注:2026年7月30日|Codex CLI 0.146.0、Copilot 代码审查、Entra Passkey 与内存行情

🔥个人主页:❄️个人专栏:🌟让复杂的事情更简单,让重复的工作自动化。

分享 Windows 系统部署、镜像封装、终端管理、故障排查与运维自动化实践,涵盖 Sysinternals、PowerShell 和 AI 工具应用。记录真实问题、探索过程与解决方法,也分享 AI 时代的学习心得和实践经验,让技术更易理解 1万+

Azure DevOps MCP Server安全指南:认证、授权与最佳实践

Azure DevOps MCP Server是将Azure DevOps强大功能直接引入代理的核心组件,其安全配置直接关系到开发环境和数据资产的保护。本文将系统介绍MCP Server的认证机制、授权控制及安全最佳实践,帮助团队构建安全可靠的开发协作环境。 ## 认证机制详解:保护访问入口 MCP Server提供多种认证方式,满足不同场景的安全需求,确保只有授权用户能够访问系统。 ###

gitblog_00455的博客 640

PoB 跑通 PoE2 配装全流程:角色一键导入到加权交易搜索

队友开黑前一句"你这 build 代码发我",你却得手动把他满地的装备一条条敲进 Path of Building PoE2(下称 PoB)?不用。装备数据能直接 PoB 导入,还能替你自动生成 PoE2 交易搜索条件、把报价统一折算成 Divine(神圣石),配装时间能省掉一大截。 [![PoB 技能石导入界面](https://raw.gitcode.com/GitHub_Trending/

gitblog_01085的博客 966
上一篇: MCP - 缩放
下一篇: MCP-安全(代码实例)
goodfornothing-s
博客等级 码龄8年 105粉丝 36原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值