我的目标是保护我的无状态API,并且仅允许注册的第一方客户端(SPA)消耗我的资源。在我的情况下,不会有任何第三方客户。
我知道对于公开客户(在我的情况下为SPA),建议使用具有隐式授予类型的Oauth 2授权。我已经阅读了很多有关此方面的内容,但是我无法理解某些要点,所以我正在寻求您的帮助:
1-您认为具有隐式授予类型的Oauth 2是实现此目标的最佳方法吗?我知道密码凭证授予类型对于SPA是不安全的,因为它们无法维护客户端机密的机密性。那么我应该使用具有隐式授予类型的Oauth 2吗?
2-在Oauth 2中,我可以使用具有自动批准的隐式授予类型,因此不再需要征得用户的同意。但是,由于我将SPA视为第一方应用程序,因此我不希望任何用户重定向到任何地方以登录并返回SPA页面。
为我的API启用http基本身份验证是否为安全和明智的,因此我的第一方应用程序将能够获取用户凭据并将其添加到授权标头并通过SSL / TLS通道发送到我的授权服务器以进行身份验证并获取访问令牌?
如果不合适,您建议如何实现这一目标?
3-我还希望未经身份验证的用户使用我的SPA中的某些资源;我应该将这些资源公开给任何客户端和任何用户(实际上我不喜欢)还是希望SPA与一个虚拟匿名用户进行身份验证和授权,以获取具有匿名特权的访问令牌来使用公共API资源。
4-对于像Wikipedia这样的网站,访问令牌应花多长时间?
5-到期后,我应该遵循哪种方法? Oauth 2隐式授予类型中没有刷新令牌。我应该要求用户再次输入其凭据(这对用户不友好)还是将其凭据存储在存储器中,然后将其静默发送到授权服务器以获取新的访问令牌?
谢谢您的帮助。