首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何针对API进行身份验证?

如何针对API进行身份验证?
EN

Software Engineering用户
提问于 2015-07-01 14:45:04
回答 3查看 1.3K关注 0票数 2

在企业分布式系统中,web门户的用户可以登录到一个站点,然后重定向到联合提供程序。一旦用户登录到facebook帐户,用户就会与信任同一个联邦提供者进行身份验证的企业中的每个服务联合(单点登录)。

我的问题是:同一个系统的API用户如何从相同的奢侈(单点登录)中获益?据我所知,API调用应该是无状态的,因此每个请求都需要单独的身份验证。

如果每个分布式API在客户端调用时,都需要调用联合提供程序,进行身份验证,将声明传递给API,然后处理客户端请求,那么在我看来,似乎有点网络聊天。

为了澄清,API客户端的一个示例场景可能是:

  1. 创建一个客户(customer )
  2. 为该客户创建一个用户(用户API)
  3. 下订单(订单API)
  4. 查看帐单声明(计费API)
  5. 查看客户报告(report )

就像我说的,对于每个API来说,就每个请求与联邦提供者交谈似乎有点闲聊。

EN

回答 3

Software Engineering用户

回答已采纳

发布于 2015-08-31 17:58:54

一般而言:

  • 用户登录到某个身份验证系统。
  • 身份验证系统提供了一个令牌,有效地写着“身份验证系统X断言您是Bob,直到8:00 PM 8/31/2015 UTC”。
  • 然后,用户将该令牌作为元数据(标头、某些数据信封)传递给各种API。
  • 各种API查看它并决定它们是否信任身份验证系统X。如果它们信任,那么就让Bob进来,因为只有Bob才能拥有获得此令牌的授权凭据(密码、指纹、视网膜等)。

设置所有这些的具体细节将根据您使用的身份验证系统、哪种令牌和哪些API库而有所不同。虽然如果你正在做的事情超出了google/facebook的基本集成,但这可能会让你感到痛苦。

票数 6
EN

Software Engineering用户

发布于 2015-07-02 14:18:26

不能使用OAuth2协议。已对用户进行身份验证一次后,系统向其发出访问令牌。此令牌将随每个请求一起发送。

Oauth2有几个流。它们主要是针对最终用户的,但是对于服务器到服务器的交互,您可以像Google现在使用的那样使用两条腿的OAuth。

票数 1
EN

Software Engineering用户

发布于 2015-08-31 20:12:18

根据您实现应用程序的方式,您可以创建一个资源/ API来生成一个令牌,就像@Telastyn所说的(或者您可以使用一个授权服务器--一个不同的应用程序来生成和验证这些令牌),并将它作为一个标头字段传递(通常人们使用授权头),并且您的API检查它的有效性(在同一个应用程序中或在授权应用程序中)。

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

https://softwareengineering.stackexchange.com/questions/288404

复制
相关文章

相似问题

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