我的api如何通过auth0登录?

时间:2018-06-05 19:24:29

标签: rest api oauth auth0

我正在尝试学习如何利用auth0来处理我正在创建的api的用户身份验证。

我的api有两个端点:

登录终结点:/api/login

请求访问令牌端点:/api/auth?code={code}

此处的身份验证流程为:

  1. 用户转到我的api的登录端点。
  2. 用户被重定向到auth0 ui。
  3. 用户输入其登录凭据。
  4. Auth0重定向回/api/auth,其中使用登录代码发出access_token请求。
  5. 首先,我理解Oauth身份验证流程是否正确?如果是这样,我的api应该如何最好地处理初始登录重定向到auth0?

    因为当我从前端ui点击/api/login时,它只返回auth0的登录页面的html。我应该使用重定向网址返回302,还是可以创建一个用户输入用户名&通过我的api密码,避免重定向?

    --- ---更新

    用户通过auth0进行身份验证后,他们会收到一个access_token和id_token,我的api应该用来验证用户是否是他们所说的人?

    不确定我的理解是否正确,但我相信我的前端ui是OAuth客户端应用程序,而我的API服务是OAuth资源服务器。因此,我的api需要调用auth0 / userinfo来验证用户吗?

1 个答案:

答案 0 :(得分:1)

假设您正在尝试保护最终用户应用程序(您的问题并未明确),我的理解是,如果您使用的是Auth0,您可能不会需要/api/loginapi/auth API。如果您使用的是Auth0,则可以通过Auth0在身份验证期间获取这些内容。

我会说你的APPLICATION(不是API)会将用户重定向到Auth0登录端点。您可以通过合并Auth0 SDK of choice来实现,具体取决于您正在构建的内容。例如,如果您要构建网络应用,则可以选择合并auth0.js并致电webAuth.authorize()来触发登录。在登录期间,如果您在Auth0中配置了API,并且在登录期间提供了适当的范围和受众,则您的响应将返回API令牌。

然后,您的用户处于您登录的客户端状态,并且您有一个令牌。然后,您可以将该令牌提供给您的API,您的API可以根据需要验证该令牌。 Auth0还有各种用于令牌验证的库(例如,像spring security one)。

最后,关于oAuth流程使用的问题,也取决于您保护的应用程序类型。再次Auth0 docs可以提供帮助。流程取决于您是否正在构建服务器端Web应用程序,SPA,本机应用程序等。您的问题有点令人困惑,这听起来有点像您正在构建API并希望保护。如果没有客户端应用程序(只有机器到机器的API调用),那么您就不会处理HTML和登录页面。您可能正在进入Client Credentials流程,我最后检查的流程仅包含在Enterprise Auth0用户中。