Skip to content

Commit f53a696

Browse files
committed
added:OAuth protocol parse and packet support
1 parent 8970bcc commit f53a696

File tree

10 files changed

+479
-14
lines changed

10 files changed

+479
-14
lines changed

XEngine_Module/XEngine_Verification/Makefile

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,11 @@ PLATFORM = linux
33
PLATVER =
44
FILEEXT =
55
LIBFLAG =
6-
LOADHDR = -I ./
7-
LOADSO =
8-
LIB = -lXEngine_BaseLib -lXEngine_Cryption -lRfcComponents_HttpProtocol
6+
LOADHDR = -I ./ -I ../jsoncpp
7+
LOADSO = -L ../jsoncpp
8+
LIB = -lXEngine_BaseLib -lXEngine_Cryption -lRfcComponents_HttpProtocol -ljsoncpp
99
LIBEX =
10-
OBJECTS = Verification_HTTP.o pch.o
10+
OBJECTS = Verification_HTTP.o Verification_OAuth.o pch.o
1111

1212
ifeq ($(RELEASE),1)
1313
FLAGS = -c -D _RELEASE
@@ -64,6 +64,8 @@ all:$(OBJECTS)
6464

6565
Verification_HTTP.o:./Verification_HTTP/Verification_HTTP.cpp
6666
$(CC) $(DEBUG) $(UNICODE) $(FLAGS) $(PLATVER) $(LOADHDR) ./Verification_HTTP/Verification_HTTP.cpp
67+
Verification_OAuth.o:./Verification_OAuth/Verification_OAuth.cpp
68+
$(CC) $(DEBUG) $(UNICODE) $(FLAGS) $(PLATVER) $(LOADHDR) ./Verification_OAuth/Verification_OAuth.cpp
6769

6870
pch.o:./pch.cpp
6971
$(CC) $(DEBUG) $(UNICODE) $(FLAGS) $(PLATVER) $(LOADHDR) ./pch.cpp

XEngine_Module/XEngine_Verification/Verification_Define.h

Lines changed: 144 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,49 @@
1111
// History:
1212
*********************************************************************/
1313
//////////////////////////////////////////////////////////////////////////
14+
// 导出定义
15+
//////////////////////////////////////////////////////////////////////////
16+
//OAUTH2验证类型
17+
#define XENGINE_VERIFICATION_OAUTH_GRANDTYPE_AUTHORIZATION_CODE _X("authorization_code") //授权码
18+
#define XENGINE_VERIFICATION_OAUTH_GRANDTYPE_CLIENT_CREDENTIALS _X("client_credentials") //客户端凭据
19+
#define XENGINE_VERIFICATION_OAUTH_GRANDTYPE_PASSWORD _X("password") //密码
20+
#define XENGINE_VERIFICATION_OAUTH_GRANDTYPE_REFRESH_TOKEN _X("refresh_token") //刷新令牌
21+
//OAUTH2错误类型
22+
#define ERROR_XENGINE_VERIFICATION_OAUTH_INVALID_REQUEST _X("invalid_request") //请求不完整或格式错误(缺少参数、无效参数、重定向 URI 不匹配等
23+
#define ERROR_XENGINE_VERIFICATION_OAUTH_INVALID_CLIENT _X("invalid_client") //无效的客户端
24+
#define ERROR_XENGINE_VERIFICATION_OAUTH_INVALID_GRANT _X("invalid_grant") //无效的授权
25+
#define ERROR_XENGINE_VERIFICATION_OAUTH_UNAUTHORIZED_CLIENT _X("unauthorized_client") //客户端未授权
26+
#define ERROR_XENGINE_VERIFICATION_OAUTH_UNSUPPORTED_GRANT_TYPE _X("unsupported_grant_type") //不支持的授权类型
27+
#define ERROR_XENGINE_VERIFICATION_OAUTH_UNSUPPORTED_TOKEN_TYPE _X("unsupported_token_type") //不支持的令牌类型
28+
#define ERROR_XENGINE_VERIFICATION_OAUTH_INVALID_SCOPE _X("invalid_scope") //无效的范围
29+
#define ERROR_XENGINE_VERIFICATION_OAUTH_ACCESS_DENIED _X("access_denied") //用户拒绝授权
30+
#define ERROR_XENGINE_VERIFICATION_OAUTH_SERVER_ERROR _X("server_error") //服务器错误
31+
#define ERROR_XENGINE_VERIFICATION_OAUTH_UNSUPPORTED_RESPONSE_TYPE _X("unsupported_response_type") //不支持的响应类型
32+
#define ERROR_XENGINE_VERIFICATION_OAUTH_TEMPORARILY_UNAVAILABLE _X("temporarily_unavailable") //临时不可用
33+
#define ERROR_XENGINE_VERIFICATION_OAUTH_INVALID_TOKEN _X("invalid_token") //无效的令牌
34+
#define ERROR_XENGINE_VERIFICATION_OAUTH_EXPIRED_TOKEN _X("expired_token") //令牌已过期
35+
#define ERROR_XENGINE_VERIFICATION_OAUTH_INSUFFICIENT_SCOPE _X("insufficient_scope") //范围不足
36+
//////////////////////////////////////////////////////////////////////////
37+
// 导出结构体
38+
//////////////////////////////////////////////////////////////////////////
39+
typedef struct
40+
{
41+
XCHAR tszClientID[128]; // 客户端ID
42+
XCHAR tszClientCode[128]; // 客户端代码,authorization_code有效
43+
XCHAR tszClientSecert[128]; // 客户端秘钥
44+
XCHAR tszClientUser[128]; // 客户端用户名,仅PASSWORD授权类型使用
45+
XCHAR tszClientPass[128]; // 客户端密码,仅PASSWORD授权类型使用
46+
XCHAR tszClientRefresh[128]; // 客户端刷新令牌,仅REFRESH_TOKEN授权类型使用
47+
XCHAR tszGrandType[64]; // 授权类型
48+
}VERIFICATION_OAUTHINFO;
49+
typedef struct
50+
{
51+
XCHAR tszTokenAccess[XPATH_MID]; // 访问的TOKEN
52+
XCHAR tszTokenRefresh[XPATH_MID]; // 刷新的TOKEN
53+
XCHAR tszTokenType[128]; // 授权类型
54+
int nExpiredTime; // 过期时间
55+
}VERIFICATION_TOKENINFO;
56+
//////////////////////////////////////////////////////////////////////////
1457
// 导出函数
1558
//////////////////////////////////////////////////////////////////////////
1659
extern "C" XLONG Verification_GetLastError(int *pInt_ErrorCode = NULL);
@@ -234,4 +277,104 @@ extern "C" bool Verification_HTTP_Basic(LPCXSTR lpszUser, LPCXSTR lpszPass, XCHA
234277
意思:是否成功
235278
备注:
236279
*********************************************************************/
237-
extern "C" bool Verification_HTTP_Digest(LPCXSTR lpszUser, LPCXSTR lpszPass, LPCXSTR lpszMethod, XCHAR** pptszListHdr, int nHdrCount, LPCXSTR lpszNonceStr = NULL, LPCXSTR lpszOpaqueStr = NULL);
280+
extern "C" bool Verification_HTTP_Digest(LPCXSTR lpszUser, LPCXSTR lpszPass, LPCXSTR lpszMethod, XCHAR** pptszListHdr, int nHdrCount, LPCXSTR lpszNonceStr = NULL, LPCXSTR lpszOpaqueStr = NULL);
281+
/************************************************************************/
282+
/* OAUTH验证导出函数 */
283+
/************************************************************************/
284+
/********************************************************************
285+
函数名称:Verification_OAuth_Parse
286+
函数功能:解析OAUTH验证请求信息
287+
参数.一:pSt_OAuthInfo
288+
In/Out:Out
289+
类型:字符指针
290+
可空:N
291+
意思:输出解析到的信息
292+
参数.二:lpszUrl
293+
In/Out:Out
294+
类型:常量字符指针
295+
可空:Y
296+
意思:输入请求的URL参数
297+
参数.三:lpszMSGBuffer
298+
In/Out:In
299+
类型:常量字符指针
300+
可空:N
301+
意思:输入负载数据类型
302+
返回值
303+
类型:逻辑型
304+
意思:是否成功
305+
备注:OAuth验证可以是在URL地址或者负载数据.
306+
*********************************************************************/
307+
extern "C" bool Verification_OAuth_Parse(VERIFICATION_OAUTHINFO* pSt_OAuthInfo, LPCXSTR lpszUrl = NULL, LPCXSTR lpszMSGBuffer = NULL);
308+
/********************************************************************
309+
函数名称:Verification_OAuth_PacketToken
310+
函数功能:打包处理函数
311+
参数.一:ptszMSGBuffer
312+
In/Out:Out
313+
类型:字符指针
314+
可空:N
315+
意思:输出打好包的验证信息
316+
参数.二:pInt_MSGLen
317+
In/Out:Out
318+
类型:整数型指针
319+
可空:N
320+
意思:输出打包的大小
321+
参数.三:lpszAccessToken
322+
In/Out:In
323+
类型:常量字符指针
324+
可空:N
325+
意思:输入要打包的访问token
326+
参数.四:lpszRefreshToken
327+
In/Out:In
328+
类型:常量字符指针
329+
可空:Y
330+
意思:输入刷新的TOKEN
331+
参数.五:lpszTokenType
332+
In/Out:In
333+
类型:常量字符指针
334+
可空:Y
335+
意思:输入TOKEN类型,默认为Bearer
336+
参数.六:nExpiredTime
337+
In/Out:In
338+
类型:常量字符指针
339+
可空:Y
340+
意思:输入token过期时间,默认为3600秒
341+
返回值
342+
类型:逻辑型
343+
意思:是否成功
344+
备注:
345+
*********************************************************************/
346+
extern "C" bool Verification_OAuth_PacketToken(XCHAR* ptszMSGBuffer, int* pInt_MSGLen, LPCXSTR lpszAccessToken, LPCXSTR lpszRefreshToken = NULL, LPCXSTR lpszTokenType = _X("Bearer"), int nExpiredTime = 3600);
347+
/********************************************************************
348+
函数名称:Verification_OAuth_PacketError
349+
函数功能:错误打包处理函数
350+
参数.一:ptszMSGBuffer
351+
In/Out:Out
352+
类型:字符指针
353+
可空:N
354+
意思:输出打好包的信息
355+
参数.二:pInt_MSGLen
356+
In/Out:Out
357+
类型:整数型指针
358+
可空:N
359+
意思:输出打包的大小
360+
参数.三:lpszOAuthError
361+
In/Out:In
362+
类型:常量字符指针
363+
可空:N
364+
意思:输入-OAUTH2错误类型,必须参考头定义的错误信息
365+
参数.四:lpszErrorDescription
366+
In/Out:In
367+
类型:常量字符指针
368+
可空:Y
369+
意思:错误描述信息
370+
参数.五:lpszErrorUri
371+
In/Out:In
372+
类型:常量字符指针
373+
可空:Y
374+
意思:输入错误URI地址
375+
返回值
376+
类型:逻辑型
377+
意思:是否成功
378+
备注:
379+
*********************************************************************/
380+
extern "C" bool Verification_OAuth_PacketError(XCHAR* ptszMSGBuffer, int* pInt_MSGLen, LPCXSTR lpszOAuthError, LPCXSTR lpszErrorDescription = NULL, LPCXSTR lpszErrorUri = NULL);

XEngine_Module/XEngine_Verification/Verification_Error.h

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,4 +17,8 @@
1717
#define ERROR_XENGINE_MODULE_VERIFICATION_HTTP_NOTSUPPORT 0x01E0002 //不支持
1818
#define ERROR_XENGINE_MODULE_VERIFICATION_HTTP_NONCE 0x01E0003 //Nonce错误
1919
#define ERROR_XENGINE_MODULE_VERIFICATION_HTTP_OPAQUE 0x01E0004 //Opaque错误
20-
#define ERROR_XENGINE_MODULE_VERIFICATION_HTTP_RESULT 0x01E0005 //验证结果错误
20+
#define ERROR_XENGINE_MODULE_VERIFICATION_HTTP_RESULT 0x01E0005 //验证结果错误
21+
/************************************************************************/
22+
/* OAUTH验证错误 */
23+
/************************************************************************/
24+
#define ERROR_XENGINE_MODULE_VERIFICATION_OAUTH_PARAMENT 0x01E1001 //参数错误,无法继续

0 commit comments

Comments
 (0)