Oauth 2.0 当对SPA使用隐式流时,我们实际上在数据库中的何处创建帐户?
我试图了解OAuth2.0隐式流(带OIDC)如何与一个非常简单的SPA/移动客户端(又名客户端)和我的RESTAPI(又名资源服务器)一起工作,并创建新帐户 我或多或少了解客户端如何从身份验证服务(Auth0/Stormpath/IdentityServer/etc)请求令牌。然后,它使用此令牌访问受限制的API端点 但我一直在读的所有例子都是,在这些Auth服务上创建了“帐户”(这是必需的,我理解),但在我的服务(我的资源服务器)上没有创建任何内容 我需要在数据库中创建一个帐户,因为我有要存储的用户数据/设置(例如,他们的订单等)。当然,我不想存储任何安全信息。。因为这就是我使用外部身份验证服务的原因 那么,有谁能解释一下他们是如何使用隐式流和。。当返回一个令牌(或者更具体地说,当使用OpenID Connect获取用户信息时),您将确定用户是否存在,并创建一个新的用户 我还建议,从身份验证服务的角度确定Oauth 2.0 当对SPA使用隐式流时,我们实际上在数据库中的何处创建帐户?,oauth-2.0,single-page-application,openid-connect,implicit-flow,Oauth 2.0,Single Page Application,Openid Connect,Implicit Flow,我试图了解OAuth2.0隐式流(带OIDC)如何与一个非常简单的SPA/移动客户端(又名客户端)和我的RESTAPI(又名资源服务器)一起工作,并创建新帐户 我或多或少了解客户端如何从身份验证服务(Auth0/Stormpath/IdentityServer/etc)请求令牌。然后,它使用此令牌访问受限制的API端点 但我一直在读的所有例子都是,在这些Auth服务上创建了“帐户”(这是必需的,我理解),但在我的服务(我的资源服务器)上没有创建任何内容 我需要在数据库中创建一个帐户,因为我有要存
唯一的
用户时,都需要令牌issuer\u id+sub
最后,您如何防止“新帐户垃圾邮件/滥用”?我假设在您的客户机中的某个点(在每次Rest API请求之前检查本地存储令牌,因为我们需要在承载
头中粘贴一些令牌)…当您决定创建新用户时。。。我的REST Api(又名资源服务器)将有一个端点来创建新用户。。比如POST/account/
。。那么,如何保护您的服务器免受垃圾邮件的新随机帖子的创建新帐户?IP+延时限制
我们在数据库中实际在哪里创建帐户
创建包含iss
和sub
列的数据库表。将这些列设置为表示用户的唯一复合键。在其中插入用户帐户
那么,谁能解释一下他们是如何使用隐式流和。。当返回一个令牌(或者更具体地说,当使用OpenID Connect获取用户信息时)时,您将确定用户是否存在,并创建一个新的用户
听起来你已经知道答案了
id\u令牌
李>
iss
和sub
李>
iss
+sub
键李>
iss
和sub
充当代表用户的唯一复合键。下面是一个示例id\u令牌
{
alg: "RS256",
kid: "1e9gdk7"
}.
{
iss: "http://server.example.com",
sub: "248289761001",
aud: "s6BhdRkqt3",
nonce: "n-0S6_WzA2Mj",
exp: 1311281970,
iat: 1311280970
}.
[signature]
对待iss
+sub
复合键的方式与对待任何其他唯一用户标识符的方式相同
那么,如何保护您的服务器免受垃圾邮件的新随机帖子的创建新帐户
设置跨源资源共享(CORS)限制,以便仅允许SPA的域发布到
/api/account
端点。好的,太好了!因此,当我得到令牌时,我需要点击我们的API来检查是否需要创建一个用户,或者只是使用现有的用户。此外,我可以使用CORS限制(白名单?)来保护该端点。