旧世界的身份验证

  • 旧的身份验证是一个混合的oauth2实现,它的端点看起来像这样/net2/oauth2/
  • 客户端应用程序由ConsumerKey秘密一对有时这些被称为client_idclient_secret
  • 旧世界中的访问令牌有12个月的有效期,刷新令牌将永远有效。这通常不是一个好的安全实践,并且违反了Oauth2标准。
  • 今天客户端使用的令牌是为WSADMINs发行的,这意味着所有令牌都具有管理访问权限。

新的世界身份验证

1.Oauth2

  • SAP Concur新的Oauth2实现遵循已建立的Oauth2授权框架RFC: https://tools.ietf.org/html/rfc6749
  • 此新服务的终结点为/oauth2/v0/token
  • 与旧世界的认证不同,访问令牌的有效期为1小时,刷新令牌的有效期为6个月。这与使用短期令牌的最佳实践是一致的。
  • 这意味着客户端需要执行令牌管理。

2.开始

  • 获取clientID/clientSecret
    • 与SAP Concur实施团队合作,获得新的oauth2client_idclient_secret并定义客户的应用范围。
    • 这个过程不会超过48小时。
    • 实施团队将以新的client_idclient_secret,公司的刷新令牌截止日期
    • 客户端使用此信息存储和配置应用程序。
  • 客户端应用程序应该在其应用程序中存储以下令牌和数据。
    • 刷新令牌:这个令牌可以改变,尽管大多数时候这个值是相同的。客户端应用程序应该将所有返回的刷新令牌视为新值,并用从响应中获得的新值覆盖存储的值。
    • 刷新令牌到期:此日期应通过每日脚本进行检查,并确保进行刷新授权以使刷新令牌无限期保持活动状态。如果公司策略规定应允许令牌过期,则可以跳过此步骤。刷新令牌过期后,客户需要联系SAP Concur的实施团队以获取新的公司令牌。

3.令牌管理

  • 调用api存取令牌
    • SAP Concur中的所有API都要求调用应用程序提供accessToken在标题中使用“Bearer”关键字。
    • 例子:
      curl-k-v-H“Accept:application/json”\-H"授权:持票人Eyjhdwqioiqiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii2.在中国,中国的一个中国的一个中国的一个中国的一个中国的一个中国的一个中国的一个中国的一个中国的一个中国的一个中国的一个中国的一个中国的一个中国的一个中国的一个中国的一个中国的一个中国的一个中国的一个中国的一个中国的一个中国的一个中国的一个中国的一个中国的一个中国的一个中国的一个中国的一个中国的一个中国的一个中国的一个中国的一个中国的一个中国的一个中国的一个中国的一个中国的一个中国的一个中国的一个中国的中国的一个中国的一个中国的一个中国的中国的中国的中国的一个中国的一个中国的一个中国的一个中国的一个中国的一个中国的一个中国的在一个中国的一个中国的一个中国的一个中国的一个中国的一个中国的一个中国的中国MC9HCHBZL2UWMTBLMJVKLWI0Y2UTNGNLMY1HN2U0LWI2NZBJJJFHZGNIMH0DHBZOI8VYXBPLMNVBMN1CNNVBHV0AW9UCY5JB20VC2NvcgVZIJJJJJJJJJ0VZWIJ0VZL9N9NZWFKIIIIJ0VZWIJ0J0J0J0J0J0J0J0J0J0J0J0J0J0J0J0J0J0J0J0J0J0J0J0J0J0J0J0J0J0J0J0J0J0J0J0J0J0J0J0J0J0J0J0J0J0J0J0J0J0J0J0J0J0J0J0J0J0J0J0J0J0J0JIKFUVEVORCIKLOVLBPIWITK9USUYILCjTVvBvTvKmilcJfBfBfBfBfRyZnZiIiIiIiIiIfZiIiIiIfFc2nVcJtLzQTVgIjJtJfHrBfBfBfBfFc2nVcJfBfCjTcJtLzVgIjJfIjJjJfHrBjJfHrBjJfHrVjJfHrVjJfHrVjIfIfIfIfIfIfIfIfIfIfIfIfIfIfIfIfIfIfIfIfIfIfIfIfIfIfIfIfIfIfIfIfIfIfIfIfIfIfIfI2.2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 06RA" \ https://us.api.concursolutions.com/profile/v1/me
    • 更多的文档:https://developer.concur.com/api-reference/authentication/getting-started.html
  • 刷新过期存取令牌
    • 自从存取令牌有一个小时的有效期,客户需要换新的吗accessToken在进行任何API调用之前。
    • 为了获得一个新的accessToken,客户端应使用刷新授权养老刷新令牌以及其他附加领域。
    • 在错误处理代码中,客户端需要处理accessToken过期错误。如果accessToken在处理过程中过期,应发生以下情况:

      • 代码应该调用Oauth2的刷新授权得到一个新的accessToken
      • 覆盖现有的刷新令牌用新的。
      • 使现代化截止日期刷新令牌
      • 重试API调用。
    • 关于刷新代币的更多细节请点击:https://developer.concur.com/api-reference/authentication/apidoc.html#refresh_token
  • 处理错误
    • 客户端应用程序应该注意一些错误代码。
    • 403禁止:为无法请求的用户请求令牌。通常是那些没有得到管理者授权的公司。
    • 大部分错误将作为400个错误返回,并且响应包含密码描述.客户端应用程序应该查找这些值,以确定下一步要做什么。
    代码 Desc 评论
    05 凭据不正确。 clientID/密码不正确,或authtoken/密码不正确
    10 帐户已禁用
    14 账户被锁定
    16 用户住在别处 对此错误消息的响应中将有一个地理位置字段。将此用作基本URL,然后重试调用。
    54 无效的范围 请求范围超出允许范围。

4.旧身份验证与新身份验证图

旧vs.新