首页 文章

WSO2 Api Manager公共本地移动应用中的OAuth2 DCR安全性

提问于
浏览
1

我正在iOS和Android的公共本地移动应用程序中设计安全性,该应用程序使用WSO2 Api Manager(APIM)使用公开的API .

因此,我了解与此设置相关的安全问题,并且我希望将OAuth2应用于本机应用程序(根据RFC 8252) .

我理解这样的应用程序应该做的第一件事是通过Store API中描述的接口向WSO2 APIM服务器注册,以便为每个应用程序接收唯一的消费者密钥/秘密,即动态客户端注册(DCR) .

以下是应该发送以获取密钥的请求示例:

curl -X POST -H "Authorization: Basic YWRtaW46YWRtaW4=" -H "Content-Type: application/json" -d @payload.json https://localhost:9443/client-registration/v0.11/register

要做这样的请求,应使用TLS 1.2进行保护,并使用WSO2 APIM的用户名/密码进行基本授权(在本例中为Base64编码 admin:admin

我知道它至少应该受到基本授权的保护,以提供一些防止DoS攻击的安全性,但另一方面,这意味着应该使用 username:password 分发应用程序以便能够进行DCR .

如果它将与此信息一起分发,那么每个人都可以获取信息并请求例如恶意应用程序注册 .

为了在WSO2 APIM中安全注册,如何处理本机移动应用程序?我认为我对其工作原理的理解缺少一些东西 .

这是否意味着安装移动应用程序的用户应该在WSO2 APIM上拥有自己的帐户,并且应该在安装后立即提供凭据?

当用户在WSO2 APIM中没有凭据但是具有通过来自WSO2 APIM的API访问的后端服务的凭证时,情况怎么样?是否可以使用此类凭证以通过WSO2 APIM的DCR注册应用程序? (目前后端和WSO2 APIM身份验证没有集成)

1 回答

  • 0

    您对APIM如何工作的理解是部分正确的 . 让我解释并纠正整个事情 .

    基本上,这种情况涉及3方 .

    • API开发人员/发布者

    • 应用程序开发人员(即您,我猜,在您的情况下)

    • 最终用户(即您的移动用户)

    如您所知,API开发人员从Publisher门户开发和发布API . 然后,应用程序开发人员可以在API Store Portal中查看这些API . 现在,如果他们想在他们的移动应用程序中使用这些API,他们需要订阅这些API . 为此,他们需要API管理器中的某些东西来代表他们的移动应用 . 为此,他们在API Store门户中创建一个应用程序,然后通过创建的应用程序订阅API .

    现在,App Developers需要密钥才能通过移动应用程序调用API . 为此,他们通过商店门户进行DCR调用,并生成消费者密钥和消费者密钥对 . 使用它们,他们可以生成访问令牌 .

    有几种不同的方法可以生成访问令牌 . 我们称它们为授权类型 . 例如,密码授予类型,客户端凭证授予类型,授权代码授予类型等 . 客户端凭证授权类型仅需要使用消费者密钥和消费者密钥对来生成访问令牌,其中密码授权类型还需要用户名和密码 . 消费者密钥,消费者秘密对 . 因此,如果您的移动应用程序用户使用某种类型的用户,您可以使用密码授予类型,这可以帮助您识别APIM级别的每个用户 . 如果您没有这样的机制,则可以使用客户端凭据授予类型,通过该类型无法区分APIM级别的最终用户 . 此处,密码授予类型生成的令牌表示最终用户,而客户端凭证授予类型生成的令牌表示应用程序 .

    在任何一种情况下,应用程序开发人员都必须将消费者密钥和消费者密钥对嵌入到他们的移动应用程序中,以便最终用户可以生成访问令牌以访问API . 重要的是用户不必单独呼叫DCR . 这是应用程序开发人员的任务 .

    我希望这有帮助 .

    EIDT :

    如果您允许用户注册移动应用并将其放在用户存储中,则可以使用授权代码授予类型 . 然后,您只能在移动应用程序中启用授权代码授权类型,并设置回调URL . 因此,如果有人窃取了消费者的秘密并在不同的应用程序中使用它,即使通过授权代码授予类型,他们也无法使用它来生成令牌,因为回调URL在服务器端验证 .

    另一种选择是隐式授权类型,它不需要客户机密钥,但它有自己的缺陷 .

相关问题