我正在开发一个由Spring Security担保的Web应用程序。新要求是用户可以使用现有的第三方OAuth2服务器(基于授权代码授权)登录,并使用其公开的API。 例如,将我的应用程序视为电子银行网站和第三方API,作为我的应用程序调用以获取用户帐户列表的银行后端。
重点:
问题:
答案 0 :(得分:1)
是的,您解释的登录流程是正确的。这正是OAuth2RestTemplate所做的 - 在会话中存储令牌。
但我完全不了解你的问题。
您是说Spring在授予身份验证代码之前强制用户登录授权服务器吗?这是正确的,因为这是允许您的应用代表他进行操作的用户。如何在没有登录的情况下授予某些东西?
我不确定Spring会强制您将用户角色映射到范围。是不是在Authorization Server中完成了限制此用户可以授予的范围?但你是对的 - 如果需要,你可以使用令牌范围将它们映射到你应用中的内部角色。
我们使用Cloudfoundry UAA来构建OAuth2授权服务器,它具有自动批准范围的概念(即不需要明确的用户批准)。你可以看一下。
我们有相同的要求,我们所做的是我们自己的自定义AuthenticationFilter(映射到redirect_uri),它正在交换收到的auth代码来访问令牌,然后使用收到的令牌和适当的内部角色创建内部身份验证。