Company是Concur中的顶级主体,您将能够代表Company获取访问令牌和刷新令牌,就像您能够获取User一样。目前只有一个授权流可用于为Company获取令牌,即密码授予使用从App Center接收的临时认证令牌。
要开始一个公司的身份验证流程,首先必须通过AppCenter的接口获得一个临时的身份验证令牌。AppCenter将请求一个临时的认证令牌,并将其交给合作伙伴,后者随后将使用它密码授予将临时认证令牌交换为公司的完全访问令牌和刷新令牌。
认证令牌仅在12小时内有效。合作伙伴有12小时的时间来交换认证令牌以获得刷新和访问令牌,并且在网络故障的情况下,可以在12小时内多次使用该认证令牌。
下面的认证流程图描述了这种握手:
公司认证流程序列图
AppCenter将调用这个端点来获取authToken
.
POST / profile-service / v1 /键/负责人/ < companyId > / authtoken /
示例旋度:
旋度- eappcenter.p12:。- h“concur-correlationid: githbuwiki”-XPOSThttps://us.api.concursolutions.com/profile-service/v1/keys/principals/08BCCA1E-0D4F-4261-9F1B-F778D96617D6/authtoken/
200好了
{“状态”:“通过”,“代码”:0,“errormsg”:"",“令牌”:“< authToken >”}
AppCenter将用户重定向到客户端的认证处理程序URI(连接URL),并传入authToken
301重定向https://client.app.url?id=company_uuid美元&requestToken=request_token美元用户标识=user_uuid美元
此时,应该提示用户登录应用程序。如果用户没有帐户,那么用户应该有能力创建一个帐户。对于具有用户读取作用域的应用程序,可以使用user UUID来预填充帐户创建表单。请参见App Center用户体验指南为更多的信息。
客户端应用程序调用Oauth2密码授权,为公司获得访问令牌
的名字 | 类型 | 格式 | 描述 |
---|---|---|---|
client_id |
字符串 |
UIID |
Applications client_id由App Management提供 |
client_secret |
字符串 |
UUID |
application client_secret由App Management提供 |
grant_type |
字符串 |
- | 指定您希望oauth2服务处理的授权类型。对于密码授予,取值为密码 |
用户名 |
字符串 |
- | 指定companyId 用于密码授权请求。的id 以上。 |
密码 |
字符串 |
- | 指定authToken 用于密码授权请求。的requestToken 以上。 |
credtype |
字符串 |
- | credtype向oauth2表示请求中提交的是哪个凭据集。价值:authtoken . |
POST /oauth2/v0/token HTTP/1.1 Content-Type: application/x-www-form-urlencoded Host: us.api.concursolutions.com Connection: close Content-Length: 175client_id=your-client_id client_secret=your-client_secret &grant_type=密码的用户名=< companyId >密码=< authtoken > &credtype=authtoken
成功
HTTP/1.1 200 OK Content-Type: application/json Date: Date -requested Content-Length: 3397 Connection: Close
{“expires_in”:“3600”,“范围”:“app_scopes”,“token_type”:“持票人”,“access_token”:“access_token”,“refresh_token”:“refresh_token”,“地理位置”:“https://us.api.concursolutions.com”}
失败
{“错误”:“invalid_grant”,“error_description”:“不正确的凭证。请重试”,“代码”:5}
HTTP状态代码 | 描述 |
---|---|
200 | 好的-成功呼叫,反应在身体上。 |
400 | 坏的请求(错误、error_description代码) |
401 | 未经授权的(错误、error_description代码) |
403 | 被禁止的(错误、error_description代码) |
404 | 没有找到(错误、error_description代码) |
500 | 服务器错误,错误信息在正文中。 |
503 | 服务器超时,错误消息在正文。 |
4xx类错误有一个JSON响应,包含以下字段
{“代码”:“< >”,“错误”:“< >错误”,“error_description”:“< error_description >”}
代码 | 错误 | 描述 |
---|---|---|
5 | invalid_grant |
不正确的凭证。请重试 |
10 | invalid_grant |
帐户被禁用。请联系支持 |
11 | invalid_grant |
帐户被禁用。请联系支持 |
12 | invalid_grant |
登录否认。请联系支持 |
13 | invalid_grant |
登录否认。请联系支持 |
14 | invalid_grant |
帐户锁定。请联系支持 |
16 | invalid_request |
用户的生活在别处 |
19 | invalid_grant |
不正确的凭证。请重试 |
51 | invalid_request |
未提供用户名 |
52 | invalid_request |
未提供密码 |
53 | invalid_client |
该客户端未启用公司 |
54 | invalid_scope |
请求的范围超出授予的范围 |
55 | invalid_request |
我们不知道这封邮件 |
56 | invalid_request |
otp 没有提供 |
57 | invalid_request |
channel_type 失踪 |
58 | invalid_request |
channel_handle 失踪 |
59 | access_denied |
客户禁用 |
60 | invalid_grant |
这些不是你想要的拨款 |
61 | invalid_client |
客户没有找到 |
62 | invalid_request |
client_id 没有提供 |
63 | invalid_request |
client_secret 没有提供 |
64 | invalid_client |
不正确的凭证。请重试 |
65 | invalid_request |
grant_type 没有提供 |
80 | invalid_request |
无效的通道类型 |
81 | invalid_request |
坏的通道处理 |
83 | invalid_request |
otp未找到 |
84 | invalid_request |
事实验证失败 |
85 | invalid_request |
otp验证失败 |
One hundred. | invalid_request |
后台不知道这个用户名 |
101 | invalid_request |
未提供代码 |
102 | invalid_request |
redirect_uri 没有提供 |
103 | invalid_request |
代码是坏的或过期的 |
104 | invalid_grant |
redirect_uri 与先前的资助金额不符 |
105 | invalid_grant |
这笔拨款不是发给你的! |
106 | invalid_request |
refresh_token 没有提供 |
107 | invalid_request |
应用程序不允许刷新 |
108 | invalid_grant |
刷新令牌错误或过期 |
109 | invalid_request |
loginid 没有提供 |
115 | invalid_request |
未经身份验证的客户端将不会被颁发令牌! |
117 | invalid_request |
Nonce是强制性的response_type |
118 | invalid_request |
显示是无效的 |
119 | invalid_request |
提示是无效的 |
119 | invalid_request |
提示符必须设置为同意offline_access |