我正在编写RESTful Web服务,其方法必须仅对经过身份验证的用户执行其任务。 网络服务的用户必须先通过Google身份提供商在网络服务上创建一个帐户(注册/注册),然后再使用其方法,并且他们必须通过Google登录才能访问网络服务所提供的功能。
这是一个示例场景:X是Google的注册用户,该Web服务不了解X,并且以前从未听说过X。 X想要在网络服务上注册,从而通过Google进行身份验证。
因此,这就像X在对Web服务说的“嘿,我是X,Google可以证明我是X,这是Google提供的令牌以及Google已经知道的关于我的其他信息,而我太懒了重新输入(姓名,姓氏,电子邮件等)。
当Web服务从X接收令牌和信息时,Web服务如何确定X确实是X? 它是否应该联系Google,并将从X收到的令牌传递给它?
按照OAuth2 V1命令行示例的说明,我设法使演示应用程序生成了序列化对象,保存在.store/oauth2_sample/StoredCredential
,并且令牌包含属性,例如access_type,受众,电子邮件,expires_in,issued_to,范围,user_id,verified_email。
我不清楚客户必须在注册阶段和使用阶段将哪些信息传递给服务,在用户注册期间服务应存储哪些信息以便以后能够对其进行身份验证以及如何做到这一点。
这个令牌在哪里/是什么? 是.store/oauth2_sample/StoredCredential
中的整个序列化对象,还是该对象的单个属性?
X如何将令牌传递到Web服务? Web服务公开的每个方法是否都必须具有一个专用于接收此认证令牌的附加参数?