我开发了一个服务于Android应用程序的Spring服务器 用户可以通过电子邮件或Google 注册。在这种情况下注册是通过授权类型
password
/
现在,我计划让我的服务器充当 OAuth2提供商,用户可以通过authorization_code
授权类型连接外部客户端和手动访问令牌,允许这些客户端访问某些客户端我的服务器上的REST API端点。
基本流程是这样的:
在外部客户端上,用户使用参数
启动对/oauth/authorize
端点的调用
显示自定义设计登录页面,用户输入用户名和密码
/oauth/confirm_access
)并授予对客户的访问权限code
参数调用重定向uri /oauth/token
端点
我已经实现了这个流程,但它确实有效。
现在我想提高一点点并增强我的自定义登录页面,用户不仅可以通过用户名和密码进行身份验证来连接外部客户端,还可以通过Google进行身份验证。
问题是我的登录表单目前看起来像这样(custom_login.jsp):
<html>
<head>
<title>Login</title>
</head>
<body>
<form action="/login" method="post">
<div class="form-group">
<label for="username">Username:</label> <input type="text"
class="form-control" id="username" name="username">
</div>
<div class="form-group">
<label for="password">Password:</label> <input type="password"
class="form-control" id="password" name="password">
</div>
<button type="submit" class="btn btn-success">Login</button>
<input type="hidden" name="${_csrf.parameterName}"
value="${_csrf.token}" />
</form>
</body>
</html>
如您所见,提交登录表单会向我的服务器的/login
端点发出POST请求,该请求不受我的控制,并重定向到/oauth/confirm_access
端点。
如果我想支持Google登录,我必须在我的custom_login.jsp中添加一个Google登录按钮,然后我几乎被卡住了。 我不知道如何使用我的服务器验证使用Google登录的用户,如/login
端点使用用户名和密码,然后进一步重定向到/oauth/confirm_access
端点。有谁知道怎么做?