我已经阅读了很多有关Oauth2授权的信息,但是我似乎找不到确切的答案,所以我希望你们中的一个可以在这里为我提供帮助。
如果我理解正确,那么Oauth2专门用于向公共第三方客户端授权您的API的一部分。我似乎在规范中找不到关于授权第一方客户端的任何提及。我已经阅读了一些有关使用隐式授予类型的文章,但感觉像是出于这个目的使用隐式授予类型,并不是规范的真正目的。
假设我有一个我想通过Web应用程序和本机移动应用程序访问的API。用户可以在这些应用程序上创建帐户并访问API的某些部分。我还希望拥有一个可以访问API所有部分的管理门户。因此,我需要在API中进行某种形式的授权,但是由于所有这些应用程序都是第一方客户端(由我自己制作),因此在此处使用Oauth2感觉不对。
因此,我的问题是,将Oauth2用于第一方应用程序是否合适,否则,对第一方客户端进行授权的替代方法是什么?
答案 0 :(得分:1)
OAuth的最初目标是允许第三方应用程序代表您访问API,而无需提供凭据。
现在,如果您拥有所有参与者(客户端,授权服务器和资源服务器),则用户会将其凭据提交给您拥有的东西(登录时的授权服务器)。
另一件事是,由于客户是由已经管理您的资源的同一公司生产的,因此同意屏幕的价值可能较低。用户可能仍然希望减少某些客户的权限(例如,仅允许您的移动客户读取您的银行交易,而Web客户端可能会创建新交易)。
话虽如此,对于任何客户端来说,OAuth2仍然是一种很好的协议,可以获取API的访问令牌。您可以使用现成的库在应用程序和服务中实现它,而避免实现自己的身份验证系统。
为您的API使用OAuth2,可以让您稍后轻松允许第三方客户端。
答案 1 :(得分:1)
OAuth 2.0用于服务到服务的授权。
当涉及到用户身份验证时,OpenID Connect是正确的选择。
您可以在OpenID Connect prompt parameter中使用“ Authentication Request”,这是一个由空格分隔的区分大小写的ASCII字符串值列表,用于指定授权服务器是否提示资源所有者重新输入密码。认证和同意。
通常,使用值“ none”,然后授权服务器不得显示任何身份验证或同意用户界面页面。