仅将Oauth2用于第一方客户端是否合适?

时间:2019-12-26 12:44:19

标签: authentication oauth-2.0 authorization

我已经阅读了很多有关Oauth2授权的信息,但是我似乎找不到确切的答案,所以我希望你们中的一个可以在这里为我提供帮助。

如果我理解正确,那么Oauth2专门用于向公共第三方客户端授权您的API的一部分。我似乎在规范中找不到关于授权第一方客户端的任何提及。我已经阅读了一些有关使用隐式授予类型的文章,但感觉像是出于这个目的使用隐式授予类型,并不是规范的真正目的。

假设我有一个我想通过Web应用程序和本机移动应用程序访问的API。用户可以在这些应用程序上创建帐户并访问API的某些部分。我还希望拥有一个可以访问API所有部分的管理门户。因此,我需要在API中进行某种形式的授权,但是由于所有这些应用程序都是第一方客户端(由我自己制作),因此在此处使用Oauth2感觉不对。

因此,我的问题是,将Oauth2用于第一方应用程序是否合适,否则,对第一方客户端进行授权的替代方法是什么?

2 个答案:

答案 0 :(得分:1)

OAuth的最初目标是允许第三方应用程序代表您访问API,而无需提供凭据。

现在,如果您拥有所有参与者(客户端,授权服务器和资源服务器),则用户会将其凭据提交给您拥有的东西(登录时的授权服务器)。

另一件事是,由于客户是由已经管理您的资源的同一公司生产的,因此同意屏幕的价值可能较低。用户可能仍然希望减少某些客户的权限(例如,仅允许您的移动客户读取您的银行交易,而Web客户端可能会创建新交易)。

话虽如此,对于任何客户端来说,OAuth2仍然是一种很好的协议,可以获取API的访问令牌。您可以使用现成的库在应用程序和服务中实现它,而避免实现自己的身份验证系统。

为您的API使用OAuth2,可以让您稍后轻松允许第三方客户端。

答案 1 :(得分:1)

OAuth 2.0用于服务到服务的授权。

当涉及到用户身份验证时,OpenID Connect是正确的选择。

您可以在OpenID Connect prompt parameter中使用“ Authentication Request”,这是一个由空格分隔的区分大小写的ASCII字符串值列表,用于指定授权服务器是否提示资源所有者重新输入密码。认证和同意。

通常,使用值“ none”,然后授权服务器不得显示任何身份验证或同意用户界面页面。