OIDC Review

What’s OIDC OpenID Connect(OIDC)是基于 OAuth 2.0 规范框架(IETF RFC 6749 和 6750)的可互操作身份验证协议。允许客户端(如 Web 应用、移动应用等)通过验证用户身份并获取基本的用户信息,来进行安全的用户认证和授权。 对于开发人员来说,它为“当前使用连接的浏览器或移动应用程序的人的身份是什么”这个问题提供了一个安全且可验证的答案。最重要的是,它消除了设置、存储和管理密码的责任,这通常与基于凭据的数据泄露有关 OAuth 2.0 是关于资源访问和共享的,而 OIDC 是关于用户身份验证的。它的目的是为你提供多个站点的一次登录名。 OpenID Connect 的角色有下面三个: 身份提供者 (Identity Provider, IdP):身份提供者,负责用户身份认证,发布授权码和令牌,验证令牌有效性。常见的 IdP 有 Google、Facebook 等。 客户端 (Client):需要获取用户身份信息的应用程序,例如 Web 应用、移动应用等。 终端用户 (End User):使用客户端应用并希望通过身份提供者进行身份认证的用户。 它的流程步骤如下实体关系图所示 EndUser:请求访问客户端应用。 Client:重定向用户到身份提供者(IdP)进行身份认证。 IdP:认证用户身份。 EndUser:提供认证凭证。 IdP:返回授权码给客户端应用。 Client:使用授权码向身份提供者请求访问令牌和 ID 令牌。 IdP:发布访问令牌和 ID 令牌给客户端应用。 Client:使用令牌为用户提供访问资源的权限。 Client:可以选择性地向身份提供者验证令牌的有效性。 通过这些流程,OpenID Connect 协议实现了安全的用户身份认证和授权,确保用户能够安全地访问客户端应用所提供的资源。 Reference […] →Read more

OAuth 详解

Problem 核心问题: "我怎样才能允许应用程序访问我的数据而又不必向其提供密码?" OAuth 是 REST/API 的委托授权框架。它允许应用获得对用户数据的有限访问权限(范围),而无需泄露用户的密码。它将身份验证与授权分离开来,并支持针对不同设备功能的多种用例。它支持服务器到服务器的应用、基于浏览器的应用、移动/本机应用以及控制台/电视。 您可以将其视为酒店钥匙卡,但适用于应用程序。如果您有酒店钥匙卡,则可以进入您的房间。如何获取酒店钥匙卡?您必须在前台进行身份验证才能获得它。通过身份验证并获取钥匙卡后,您可以访问整个酒店的资源。 简单来说,OAuth 是 (以照片打印程序 PhotoApp 为例) 应用程序向用户请求授权: PhotoApp 向 Alice 请求要访问 Alice 的照片 用户授权App并提供证明: PhotoApp 向 Alice 申请我授权访问她的 QQ 相册, 而 Alice 授权 PhotoApp 这一请求 应用程序向服务器提供授权证明以获取令牌: PhotoApp 向 QQ 相册提供 Alice 的授权证明 Token 仅限于访问用户为特定应用授权的内容 QQ 相册发给 PhotoApp 访问 Alice 相册图片的访问令牌 access token OAuth 流程中的参与者如下: 资源所有者 Resource Owner(RO):拥有资源服务器中的数据。例如,Alice 是她的 […] →Read more

网络安全威胁及其消除

网络安全威胁及其与脆弱性的关系 网络安全威胁被IEC 81001-5-1定义为潜在的安全违规,来源于各种情况、能力、行动或事件,可能会破坏安全性并对信息资产的保密性(confidentiality)、完整性(integrity)和可得性(availability)造成损害(IEC 81001-5-1)。 简单来说,它指的是信息资产在使用中可能出现的问题。只有在脆弱性存在并被威胁者利用的情况下时,安全违规才会发生。脆弱性是系统、应用程序、网络或器械中存在的漏洞或缺陷。它,可以被利用来危害信息系统的保密性、完整性和可得性。这些脆弱性可能存在于软件代码、配置、协议、硬件设计,甚至是人为活动中,可能被有意或无意地引入。 威胁建模在器械网络安全中的重要性 威胁建模是一种以结构化方式分析器械所面临安全威胁的方法。通过它可以识别、列举和优先排列处理与每个威胁相关的弱点。简单地说,一旦我们了解了可能出错的地方(即威胁),我们就可以根据器械的设计对威胁建立模型,从而了解威胁在器械及其连接的 IT 系统中的表现形式。 例如,考虑一个使用蓝牙无线传输健康数据的器械。对它来说,可预见的威胁之一就是健康信息的泄露。假设对这个器械的这一威胁进行建模,我们发现未加密的蓝牙数据传输是攻击者可能利用来实施这一威胁的安全弱点。 因此,研发团队增加了蓝牙数据加密这一设计要求,以解决这个安全弱点,进而减少威胁。我们可以从这个简化的例子中看到,威胁建模的目的是针对器械的设计分析网络威胁可实现的手法,从而找出并解决相关弱点,来确保器械的在使用中不受到该威胁的影响。 使用STRIDE启动威胁建模 在有了可用的系统描述之后,我们可以开始威胁建模,这也正是STRIDE开始发挥作用的时候。STRIDE代表Spoofing(欺骗)、Tampering(篡改)、Repudiation(否认)、Information disclosure(信息泄露)、Denial of service(拒绝服务)和Elevation of privilege(权限提升)。它们代表了针对信息系统最常见的六种安全威胁类型,可以类似理解为ISO 14971中医疗器械所面临的危害(harm)。STRIDE由微软的安全研究人员于1999年开发,是目前使用最广泛的结构化威胁建模技术之一 1. Spoofing 欺骗 防止非法获取或者伪造帐号信息, 访问我们的系统 非认证的用户不可访问系统 非授权的用户不可访问没有权限的模块, 不能进行非授权的操作、 2. Tampering 篡改 防止篡改或损坏系统中的数据 数据在传输层要安全, 要使用 HTTPS, TLS, DTLS 或者 SRTP 进行加密传输 3. Repudiation 否认 防止不承认对系统的攻击或者误用 管理员以及用户的关键操作要可追溯 4. Information Disclosure 信息泄露 配置文件中的帐户密码不可使用明文 PII (Personal Insensitive Information ) 安全 […] →Read more

医疗器械及软件的网络安全

医疗软件网络安全能力测试过程的要求 医疗器械网络安全是指保护医疗器械产品自身和相关数据不受未授权活动影响的状态,其保密性(Confidentiality)、完整性(Integrity)、可得性(Availability)相关风险在全生命周期均处于可接受水平。 保密性是指信息不被未授权实体(含产品、服务、个人、组织)获得或知悉的特性,即医疗器械产品自身和相关数据仅可由授权用户在授权时间以授权方式进行访问和使用。 完整性是指信息的创建、传输、存储、显示未以非授权方式进行更改(含删除、添加)的特性,即医疗器械相关数据是准确和完整的,且未被篡改。 可得性是指信息可根据授权实体要求进行访问和使用的特性,即医疗器械产品自身和相关数据能以预期方式适时进行访问和使用。 除保密性、完整性、可得性三个基本特性外,医疗器械网络安全还包括真实性(Authenticity)、抗抵赖性(Non-Repudiation)、可核查性(Accountability)、可靠性(Reliability)等特性。 真实性是指实体符合其所声称的特性 抗抵赖性是指实体可证明所声称事件或活动的发生及其发起实体的特性 可核查性是指实体的活动及结果可被追溯的特性 可靠性是指实体的活动及结果与预期保持一致的特性。 医疗器械网络安全能力 — 22项能力 序号 能力 英文和缩写 说明 1 自动注销 ALOF 产品在无人值守期间阻止非授权用户访问和使用的能力 2 审核 AUDT 产品提供用户活动可被审核的能力 3 授权AUTH 产品确定用户已获授权的能力 4 节点鉴别 NAUT 产品鉴别网络节点的能力 5 人员鉴别 PAUT 产品鉴别授权用户的能力 6 连通性 CONN 产品保证连通网络安全可控的能力 7 物理防护 PLOK 产品提供防止非授权用户访问和使用的物理防护措施的能力 8 系统加固 SAHD 产品通过固化措施对网络攻击和恶意软件的地狱能力 9 数据去标识化与匿名化 DIDT 产品直接去除、匿名化数据所含个人信息的能力 10 数据完整性与真实性 IGAU […] →Read more

医用电气设备网络安全能力

1.自动注销 (ALOF) 2.审核控制 (AUDT) 3.授权 (AUTH) 4.节点鉴别 (NAUT) 5.人员鉴别 (PAUT) 6.连通能力 (CONN) 7.物理防护 (PLOK) 8.系统加固 (SAHD) 9.数据去标识化与匿名化 (DIDT) 10.数据完整性与真实性 (IGAU) 11.数据备份与灾难恢复 (DTBK) 12.数据存储保密性与完整性 (STCF) 13.数据传输保密性 (TXCF) 14.数据传输完整性 (TXIG) 15.网络安全补丁升级 (CSUP) 16.现成软件清单 (SBOM) 17.现成软件维护 (RDMP) 18.网络安全使用指导 (SGUD) 19.网络安全特征配置 (CNFS) 20.紧急访问 (EMRG) 21.远程访问与控制 (RMOT) 22.恶意软件探测与防护 (MLDP) — 参见 "医用电气设备网络安全基本要求 YY/T 1843-2022" →Read more

MicroProfile

Spec Config Fault Tolerance Health JWT Jakarta EE Metrics Open API Rest Client Telemetry Implementation MicroProfile MicroProfile Config MicroProfile Health MicroProfile Metrics MicroProfile Fault Tolerance MicroProfile Rest Client MicroProfile OpenAPI MicroProfile JWT Authentication MicroProfile Telemetry MicroProfile GraphQL MicroProfile Conference App →Read more

what AI-assisted programming can help programmer?

概述 AI-assisted programming can significantly benefit programmers by enhancing productivity, reducing repetitive tasks, and assisting with complex problem-solving. Here are some key ways it helps: 1. Code Generation and Auto-Completion: AI tools like GitHub Copilot and ChatGPT can generate code snippets, complete lines, and even suggest entire functions based on comments or partially written code, […] →Read more

glib中的陷阱

GLib is a general-purpose, portable utility library, which provides many useful data types, macros, type conversions, string utilities, file utilities, a mainloop abstraction, and so on. 在 Linux 系统上做 C/C++ 语言的开发, glib 是常用的 library, 大量的的 library 也基于它, 例如 gstreamer, libsoup 等大名鼎鼎的工具和库. What is GMainContext? GMainContext is a generalized implementation of an event loop, useful for […] →Read more

quick start kubernetes

写技术书籍, 特别是入门书籍, 就要象"quick start kubernetes" 这本书一样, 在一两个小时可以读完, 生动有趣, 边看边动手, 快速上手, 快速入门 学习了 create and push docker image cd hellonode docker image build -t hfrtc/hellonode:1.0 . docker login docker image push hfrtc/hellonode:1.0 create pod kubectl apply -f hellonode_pod.yaml kubectl get pods > NAME READY STATUS RESTARTS AGE > hello-node 1/1 Running 0 5m5s kubectl describe pod […] →Read more

linux 上的 http proxy

在 Linux 上配置 HTTP 代理可以通过以下几种方式进行: 1. 在环境变量中配置 常用的方法是在环境变量中设置 HTTP 和 HTTPS 代理。可以编辑用户的 shell 配置文件(例如 .bashrc 或 .zshrc),添加以下行: export http_proxy=http://proxy_server_address:proxy_port export https_proxy=https://proxy_server_address:proxy_port export ftp_proxy=ftp://proxy_server_address:proxy_port export no_proxy=”localhost,127.0.0.1,::1″ • proxy_server_address: 代理服务器的地址。 • proxy_port: 代理服务器的端口。 • no_proxy: 不使用代理的地址,通常是本地 IP。 设置完成后,重新加载配置文件: source ~/.bashrc # 或 source ~/.zshrc 2. 为特定程序配置 有些程序允许在其配置文件中单独配置代理,例如 curl 和 git。 配置 curl 代理 可以直接通过命令行为 curl 配置代理: curl […] →Read more