首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OAuth认证授权

OAuth认证授权
EN

Stack Overflow用户
提问于 2018-07-03 15:32:22
回答 2查看 92关注 0票数 1

我对OAuth的使用完全感到困惑,我不知道如何在我的szenario中使用oauth。目前,我使用的是“纯”JWT方法,该方法如下所示:

  1. 客户端(JavaScript应用程序)发送登录和密码到我的Rest-端点(服务器(Java))。
  2. 服务器验证用户信息,读取/生成一些用户角色,并将其封装在JWT令牌中(带有一个秘密)
  3. 服务器将JWT令牌发送回客户端
  4. 客户端将使用Authorizationen头执行额外的Rest调用。
  5. 服务器通过基于角色/用户的私有秘密访问和大访问验证令牌

现在我想到了OAuth的用法,但我很困惑如何使用它来实现szenario。

  1. 我在"auth0“注册了一份申请。
  2. 我使用JS库重定向到auth0的登录过程,通过auth0帐户登录,并使用id_token和access_token。

=我可以将id_token (使用RSA256的JWT)发送到rest,使用公共证书验证它,并提取一些用户信息

但是:

( a)我读到过不应该使用id_token访问api。相反,我应该使用access_token (它不是JWT格式,也不会给我任何关于用户的信息),并使用access_token查询用户信息?每一个请求都是这样的?!

( b)我看不出用户角色发挥作用的程度。当我有一些操作(rest端点)时,这些操作只允许"admins“或"customers”。我看不出有什么可能给它们下定义。

你看,我有点困惑,我希望有人能澄清所有的事情。非常感谢克里斯

EN

回答 2

Stack Overflow用户

发布于 2018-07-04 07:22:23

( a)您使用的两个令牌都应该是JWT格式,您应该在经过身份验证的查询中使用access_token。access_token不一定包含有关用户的信息,因此在服务器端,您通常只能确定令牌服务发出的令牌是有效的。如果所有这些检查都通过了,您应该接受它作为一个经过身份验证的用户。

( b)可以将用户角色作为附加声明(例如,role=admin、数据作者或role=customer、列表阅读器)放置到access_token的有效负载部分中。

希望能帮上忙。

票数 0
EN

Stack Overflow用户

发布于 2018-07-05 13:03:48

( a)听起来您得到的是一个不透明的 access_token,而不是JWT。您需要在中创建Auth0 API(类似于您已经创建的应用程序/客户端)。然后,在进行身份验证时,在audience参数中传递该标识符。然后您应该得到一个JWT,它将有一个sub参数,它是用户的Auth0 ID,它可以帮助您识别用户是谁。我相信,如果您需要在令牌中添加更多的标识信息,也可以使用Auth0规则。有关不透明访问令牌与JWT访问令牌的完整说明,请参见此处:https://auth0.com/docs/tokens/access-token

( b)角色是棘手的。我相信Auth0会建议您在API上创建作用域,然后在登录期间请求所需的作用域。然后将Auth0规则用作一种“胶水”,以调整已请求但不允许通过身份验证的用户的作用域。它们还有一个授权扩展,您可以使用它来帮助实现其中的一些功能。另一个选项可以是将角色信息存储在用户元数据中,并使用规则将该信息放入令牌中。最后,我们选择的选项是不使用Auth0来定义角色。我们让Auth0进行身份验证,一旦经过身份验证,我们就在系统中检查对事物的授权方面的访问。有很多选择。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51158314

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档