瞭解Oracle Mobile Hub 應用程式的認證選項
Oracle Mobile Hub 可讓您使用 OAuth、Single Sign-On 或 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 金鑰鏈中的使用者名稱和密碼:
-(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
) 並重新認證。