- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我一直在使用 API,我一直想知道为什么必须使用 key 和 secret ?
为什么需要两种类型的身份验证?
最佳答案
当服务器接收到 API 调用时,它需要知道两件事:谁在进行调用,以及调用是否合法。
如果您只有一个项目(“ key ”),并且每次通话都包含它,那么它会回答这两个问题。基于“ key ”,服务器知道您是谁,并且因为只有您知道 key ,它证明调用实际上来自您。但是在每次通话中都包含 key 是不好的安全做法:如果有人甚至可以在传输过程中读取您的一条消息,那么您的 key 就会被泄露,并且有人可以假装是您。所以除非你使用 HTTPS,否则这种方法是行不通的。
相反,您可以在每个调用中包含一个数字签名,并使用一些“ secret ”号码签名。 (不发送“ secret ”号码本身)。如果攻击者设法阅读您的消息,他们将无法从签名中找出这个“ secret ”号码。 (这就是数字签名的工作方式:它们是单向的)。
但这并没有解决识别问题:在后一种情况下,服务器如何知道谁在进行调用?它可以尝试根据每个用户的“ secret ”来验证签名,但这当然会非常耗时。
所以,这就是我们要做的:发送一个“ key ”(标识用户)和一个使用“ secret ”数字创建的签名(证明消息是合法的)。服务器根据 key 查找用户,然后使用该用户的“ secret ”号码验证签名。
这有点像你写一张支票:上面有一个帐号(用来识别你)和你的签名(用来证明你就是你)。只有帐号并不能证明您确实写了支票。只有没有帐号的签名会迫使银行将您的支票与其所有账户的所有签名进行比较,这显然是低效的。
关于api - 在使用大多数 API 时,为什么它们需要两种类型的身份验证,即 key 和 secret ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1482472/
我正在尝试在我的 minikube 上启动并运行 keycloak。 我正在安装keycloak helm upgrade -i -f kubernetes/keycloak/values.yaml
我将我的数据库密码存储到AWS密钥管理器的Secret Value字段中。如果我使用以下代码,如何检索密码值?。在密钥管理器中定义的密钥:密钥在密钥管理器中定义的值:DBPwd。当我写入日志文件时,上
I am storing my database password into the Secret value field in the aws secret manager. How do I
我正在尝试在 AWS CDK 上组合一个相对简单的堆栈,其中涉及来自 aws-ecs-patterns 的 ApplicationLoadBalancedFargateService。 我的问题涉及
今天我在悠闲地阅读时偶然发现了 Recommendation for Pair-Wise Key Establishment Schemes Using Discrete Logarithm Cryp
不是一个真正的编程问题,但很想知道 Kubernetes 或 Minikube 如何管理 secret 并在多个节点/pod 上使用它? 假设我创建了一个 secret 来使用 kubectl 提取图
我需要从 AWS dynamoDB 和第三方 https 服务中获取元素并将这些结果合并到 AWS appSyn 中并将结果作为 graphQL 响应发回 我正在使用的第三方服务需要客户端证书。我没有
我收到一个错误: gpg: no default secret key: No secret key gpg: [stdin]: clearsign failed: No secret key GPG
我正在尝试为 kubernetes 集群设置私有(private) docker 镜像注册表。我正在关注 link $ cat ~/.docker/config.json | base64 ew
当我开发一个API服务器时,我需要给API服务器一些账户信息,这些信息不应该给任何人看。K8s对这种情况推荐secret,所以我用了。 但我想知道这个 secret 是否真的是 secret 。 se
在大多数有关在 Kubernetes 中使用 secret 的示例中,您都可以找到类似的示例: apiVersion: v1 kind: Secret metadata: name: mysecr
我正在与 terraform 合作,在 azure 中启动不同的资源。其中一些资源包含敏感数据,我希望将其安全地存储在 aws Secret Manager 中。这在 Terraform 中是可行的过
我有带有有效 key 的 Azure 应用程序注册。 我正在尝试使用 v1.0 获取 token ,如下所示(clientId 是上述应用程序注册的 ID) $body = @{ grant_
本文讨论如何安装 secret 卷。 https://learn.microsoft.com/en-us/azure/container-instances/container-instances-v
我正在使用 kubernetes 将 Rails 应用程序部署到谷歌容器引擎。 遵循 kubernetes secret 文档:http://kubernetes.io/v1.1/docs/user-
我正在与 terraform 合作,在 azure 中启动不同的资源。其中一些资源包含敏感数据,我希望将其安全地存储在 aws Secret Manager 中。这在 Terraform 中是可行的过
我有带有有效 key 的 Azure 应用程序注册。 我正在尝试使用 v1.0 获取 token ,如下所示(clientId 是上述应用程序注册的 ID) $body = @{ grant_
本文讨论如何安装 secret 卷。 https://learn.microsoft.com/en-us/azure/container-instances/container-instances-v
我有一个 python 脚本,它在 AWS 中创建一些访问 key 并将它们存储在 secret 管理器中。 但是,当我存储 key 时,我收到一条错误消息: The secret value can
我在 Secrets Manager 控制台上创建了一个 key 。然后我尝试使用 Go 代码 quickstart guide喜欢 ctx := context.Background() clien
我是一名优秀的程序员,十分优秀!