- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在大多数开放平台系统中,如 Facebook、Twitter。
客户端应用有三个值。App-Id,App-Key,App-Secret.
App-Secret 很容易理解。永远不会向公众展示的 secret 值,不得将其捆绑到客户端应用程序中以确保安全。
App-Id,App-Key都是用来区分客户端应用的。两者都可能捆绑到客户端应用程序中。
我认为 App-Id/App-Secret 对或 App-Key/App-Secret 对适用于大多数情况。
为什么大多数平台都需要App-Id和App-Key?设计目的是什么?
现在,我认为 App-Id 和 App-Key 都只是一个 ID,App-Id是一个数字id,App-Key是一个UUID。对吗?
最佳答案
TL;DR - 术语“App Id”和“App Key”的定义取决于服务提供商对授权策略的实现。通常,“App Id”表示 oAuth 客户端 ID,“App Key”表示 oAuth 客户端 secret ,但一些提供商可能将“App Id”和“App Key”定义为同一事物(客户端 id)。
全文:
条款基于 oAuth 协议(protocol)。 (某些平台使用的 OpenID Connect 是 oAuth 的超集)。您可能知道,在 oAuth 中有 3 个协作实体:客户端、授权服务器 和资源服务器。客户端代表客户端应用程序被授权。为了让授权服务器区分客户端(应用程序 A 与应用程序 B),客户端必须向授权服务器注册。来自 RFC 6749 (oAuth 2.0):
Before initiating the protocol, the client registers with theauthorization server. The means through which the client registerswith the authorization server are beyond the scope of thisspecification but typically involve end-user interaction with an HTMLregistration form.
当客户端注册时,它会收到一个客户端ID:
The authorization server issues the registered client a clienidentifier -- a unique string representing the registrationinformation provided by the client. The client identifier is not asecret; it is exposed to the resource owner and MUST NOT be used alonefor client authentication. The client identifier is unique to theauthorization server.
此外,如果客户端类型是 secret (由规范定义为能够维护其凭据的 secret 性或能够使用其他方式进行安全客户端身份验证),该规范要求客户端建立一种验证自身的方法:
The client and authorization server establish a client authenticationmethod suitable for the security requirements of the authorizationserver. The authorization server MAY accept any form of clientauthentication meeting its security requirements. Confidential clientsare typically issued (or establish) a set of client credentials usedfor authenticating with the authorization server (e.g., password,public/private key pair).
到目前为止,我们有两件事 - 客户端 ID 和一组可选的客户端凭据。在许多流程(授权类型)中,后者确实变成了称为客户端 secret 的单个项目,本质上是密码。
某些平台可能将客户端 ID 称为“应用程序 key ”,其他平台将其称为“消费者 ID”,还有一些平台将其称为“客户端 key ”。 Twitter 创建了这个 pithy doc note为了消除混淆:
Client Credentials:
App Key === API Key === Consumer API Key === Consumer Key === Customer Key === oauth_consumer_key
App Key Secret === API Secret Key === Consumer Secret === Consumer Key=== Customer Key
此注释非常无用。他们试图说明一个观点,即整个宇宙的实现为同一概念分配不同的标签,但他们的尝试很糟糕。 Twitter 的实现不使用 App Key Secret,他们只需要一个 App Key(客户端 ID)。在 Twitter 的流程中,App Key/client id 被称为 oauth_consumer_key
。
如果您查看其他服务提供商的文档,您会得到一个更好的主意。 Facebook 在他们自己的 API 中包装了大量的 oAuth 流程,所以他们不是一个很好的例子。 Salesforce是一个更直接的实现。它将客户端 ID 称为消费者 key ,将客户端 secret 称为消费者 secret 。
总而言之,提供客户端 ID 和可选客户端密码的要求是由 oAuth 规范驱动的。如果服务提供商遵守 oAuth,则他们用于自己实现的标签应该与规范相对应。 Twitter 在其文档中应使用超过 140 个字符!
关于security - 大多数开放平台上的app-id和app-key有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55902150/
请帮助我的建议。 我需要通过 xml 文件中的某个变量在我的应用程序上禁用/启用 spring 安全性。 我的 spring-security.xml 文件
我做了很多研究,对我来说一切看起来都是正确的......但我无法让它发挥作用!有人有什么想法吗? 无论我做什么,相关映射仍然对任何人公开(匿名或登录,无论他们具有什么角色)。 理想情况下,我希望所有请
我们正在考虑为我们网站的一部分启用 SSL,但某些页面包含来自第三方供应商(如 Google AdSense)的广告。 我认为这会给我们的用户带来一个恼人的问题,因为他们在查看带有广告的页面时会看到类
我正在开发一个休息服务,它将通过浏览器提供 浏览器单页应用程序和移动应用程序。目前我的服务正在运行 根本没有 Spring 。 oauth2 客户端是在过滤器内部实现的,所以可以说是“手动”。 我正在
我正在为我公司的网站添加 Content-Security-Policy-Report-Only 标题。在我研究它时,我发现一些页面已经设置了 Content-Security-Policy head
在 XML 配置中,我可以使用 security 命名空间来启用对安全性的支持,例如: 我尝试使用没有 XML 的 Spring,只有 @Configuration 类。与上述 XM
我正在使用 Spring Security 3.0.2,但找不到从数据库加载匿名用户角色的方法(我有动态角色,可以将角色分配给每个人)。 我尝试使用自定义的anonymousAuthenticatio
我有那个代码。但是当我在浏览器中进入 app_dev.php/login浏览器说:该页面进行了太多重定向 安全.yml安全: 编码器: Symfony\Component\Security\Core\
我正在使用SSH Secure Shell客户端,这是一个连接服务器的好工具。 但是,我想知道是否可以记录通过SSH Secure Shell客户端运行的程序中所有即将出现的消息。例如:./ test
我有那个代码。但是当我在浏览器中进入 app_dev.php/login浏览器说:该页面进行了太多重定向 安全.yml安全: 编码器: Symfony\Component\Security\Core\
如何为表单例份验证提供程序设置 success_handler(和 failure_handler)? Silex 使用此配置忽略我: register(new Silex\Provider\Secu
新手问题...我已成功实现自定义处理程序和服务(自定义用户详细信息服务、身份验证成功、身份验证失败)并且一切正常。我现在还实现了如果 3 次并发身份验证失败将锁定帐户(一定时间)的功能。 我现在继续处
我正在使用 Spring security java 配置,我想知道一种实现多个 url 注销的方法。即 logout().logoutRequestMatcher(new AntPathReques
我正在为我的 SP 使用 Spring Security SAML 扩展。用户通过 IDP 身份验证后,SP 使用某种方法允许后续调用不必通过 IDP 重新进行身份验证。这是如何在 Spring Se
spring security 有没有办法防止下面的最后一点?我正在使用 3.0.5 - 用户登录我的网站 - 用户转到网站中的任何页面并单击注销 -注销链接使用户 session 无效并将它们发送到
要么我迟到了,要么我做错了什么。我正在使用 Visual Studio 2013,但是我试图使用 Membership 类,using System.Web.Security;我的程序集中不存在命名空
我有一个具有依赖性的oauth2客户端spring-boot应用程序: - Spring 靴1.2.0.RC1 -spring-security-oauth2 2.0.4.RELEASE - Spri
我想在控制台应用程序中生成 HashPasswordForStoringInConfigFile。 它是在 Web 应用程序中使用以下类完成的 System.Web.Security.FormsAut
我需要有多个 PRE_AUTH Spring 安全过滤器。特别是我需要使用 PRE_AUTH除了配置为 PRE_AUTH 的两个过滤器之外的过滤器在 Spring Security 3.0 的 SAM
我猜这里没有答案,但我想知道是否有办法创建这样的自定义注释: @Documented @Inherited @Retention(RetentionPolicy.RUNTIME) @Target({E
我是一名优秀的程序员,十分优秀!