了解Oracle Mobile Hub 应用程序的验证选项

Oracle Mobile Hub 允许您使用 OAuth、一次登入或 HTTP 基本验证等技术来验证移动应用程序。

在验证您的 iOS 应用程序之前,您必须在 XCode 项目中导入以下库:

#import "OMCCore/OMCAuthorization.h"
#import "OMCCore/OMCMobileBackend.h"
#import "OMCCore/OMCMobileManager.h"

关于使用 OAuth 使用者和 HTTP 基本

Oracle Mobile Hub SDK 提供处理用户验证的方法。

使用以下方法处理使用用户名和口令登录的用户:

- (void) authenticate:(NSString *)userName
             password:(NSString *)password
      completionBlock: (nullable OMCErrorCompletionBlock) completionBlock;

此方法终止与Oracle Mobile Hub 的连接,并从 iOS keychain 清除用户名和口令:

-(void) logout: (nullable OMCErrorCompletionBlock) completionBlock;

关于将单点登录与第三方标记一起使用

您可以使用第三方标记在 Oracle Mobile Hub 中验证您的 iOS 应用序。

首先,应用程序需要从第三方标记发布者获取标记。获取标记的方式因发布者而异。

令牌一旦进行了验证,请使用它进行验证。此示例中的代码检查在重新登录之前,标记已存储在Oracle Mobile Hub 中:

-(void) authenticateSSOTokenExchange: (NSString*) token
            storeAccessToken:(BOOL) storeToken
            completionBlock: (OMCErrorCompletionBlock) completionBlock;

注 :

Oracle Mobile Hub 中存储第三方标记的默认失效时间为 6 小时。可以通过更改 Security_TokenExchangeTimeoutSecs 策略来调整此时间。

即使关闭和重新启动应用程序,也可以对应用程序进行编码以保持用户登录状态。

authenticateSSOTokenExchange 方法中,如果 storeAccessToken 设置为 YES,标记将存储在安全存储中,用户将一直保持登录状态,直到该标记失效为止。

可以使用应用程序启动序列中的 loadSSOTokenExchange() 方法从钥匙链加载标记。(如果无法检索令牌,方法将返回 NO)。

下面是尝试加载保存的标记的一些代码,如果该代码失败,请重新启动验证过程:

OMCAuthorization* auth;
if ( [auth loadSSOTokenExchange] ){
	NSLog(@"## Token already found, login skipped.");
    ...
}
else{
	[auth authenticateSSOTokenExchange:thirdPartyToken
	 storeAccessToken:YES
	 completionBlock:^(NSError * _Nullable error) {
					   
	    if( error ){
	        //Show error popup
	    }
	    else{
	        // Login success.
	        ...
	    }
	}];
}

当您具有存储在安全存储中的标记时,它将保持与应用程序最初使用的后端关联。因此,如果更新了应用程序以使用其他移动后端(或移动后端版本),则需要清除保存的标记(使用 clearSSOTokenExchange)并重新验证。