Oracle Mobile Hub 애플리케이션에 대한 인증 옵션 정보
사용자는 OAuth, Single Sign-On, HTTP 기본 인증 및 Facebook 로그인을 비롯한 다양한 기술을 사용하여 Oracle Mobile Hub 응용 프로그램에서 인증할 수 있습니다.
OAuth 소비자 정보
사용자는 OAuth 소비자를 사용하여 Oracle Mobile Hub Android 애플리케이션으로 인증할 수 있습니다.
먼저 권한 부여 에이전트를 초기화하고 인증 유형을 OAUTH
로 설정합니다.
private AuthorizationAgent mAuthorization;
private MobileBackend mobileBackend;
try {
mobileBackend = MobileManager.getManager().getMobileBackend(this);
} catch (ServiceProxyException e) {
e.printStackTrace();
}
mAuthorization = mobileBackend.getAuthorization(AuthType.OAUTH);
그런 다음 authenticate
메소드를 사용하여 인증을 시도합니다. 호출에 Android 컨텍스트에 대한 매개변수, 사용자 이름, 비밀번호 및 권한 부여 프로세스를 완료하는 콜백이 포함됩니다.
TextView username, password;
username = (TextView) findViewById(R.id.username);
password = (TextView) findViewById(R.id.password);
String userName = username.getText().toString();
String passWord = password.getText().toString();
mAuthorization.authenticate(mCtx, userName, passWord, mLoginCallback);
콜백에 대한 정의는 다음과 같습니다.
AuthorizationCallback mLoginCallback = new AuthorizationCallback() {
@Override
public void onCompletion(ServiceProxyException exception) {
Log.d(TAG, "OnCompletion Auth Callback");
if (exception != null) {
Log.e(TAG, "Exception while receiving the Access Token", exception);
} else {
Log.e(TAG, "Authorization successful");
}
}
}
타사 토큰이 있는 Single Sign-On 인증 정보
타사 제공자가 발급한 토큰을 사용하여 모바일 애플리케이션을 인증할 수 있습니다.
첫째, 앱은 타사 토큰 발행자로부터 토큰을 가져와야 합니다. 토큰을 얻을 수 있는 방법은 발행자에 따라 다릅니다.
토큰이 있으면 권한 부여 에이전트를 초기화하고 권한 부여 호출에서 토큰을 사용합니다.
private AuthorizationAgent mAuthorization;
private MobileBackend mobileBackend;
Context mCtx = getApplicationContext();
try {
mobileBackend = MobileManager.getManager().getMobileBackend(this);
} catch (ServiceProxyException e) {
e.printStackTrace();
}
mAuthorization = mobileBackend.getAuthorization(AuthType.TOKENEXCHANGE);
그런 다음 authenticateUsingTokenExchange
메소드를 사용하여 인증을 시도합니다.
mAuthorization.authenticateUsingTokenExchange(mCtx, token, false, mLoginCallback);
콜백은 다음과 같습니다.
AuthorizationCallback mLoginCallback = new AuthorizationCallback() {
@Override
public void onCompletion(ServiceProxyException exception) {
if (exception == null) {
//redirect to another Activity after login
Intent intent = new Intent(mCtx, ContentActivity.class);
startActivity(intent);
} else {
Log.e(TAG, "Exception during token exchange:", exception);
finish();
}
}
};
주:
Oracle Mobile Hub 에 타사 토큰을 저장하는 기본 만료 시간은 6시간입니다.Security_TokenExchangeTimeoutSecs
정책을 변경하여 이 시간을 조정할 수 있습니다.
앱을 닫고 재시작할 때에도 사용자가 로그인한 상태로 유지하도록 앱을 코딩할 수 있습니다.
위 예에서 authenticateUsingTokenExchange()
메소드는 세 번째 매개변수 (storeToken
) 를 false
로 설정하여 호출됩니다. 이 매개변수를 true
로 설정하고 토큰 교환을 성공하면 MCS 토큰이 보안 저장소에 저장되고 사용자가 토큰이 만료될 때까지 로그인한 상태로 유지됩니다.
그런 다음 Authorization
객체의 loadSSOTokenExchange
메소드를 사용하여 저장된 토큰을 로드할 수 있습니다. 보안 저장소에서 토큰을 검색할 수 없는 경우 메소드는 false
를 반환합니다.
다음은 저장된 토큰을 로드하려고 시도하고, 실패할 경우 인증 프로세스를 재시작하는 몇 가지 코드입니다.
try {
mAuthorization = MobileManager.getManager().getMobileBackend(this).getAuthorization();
if (!mAuthorization.loadSSOTokenExchange(mCtx)) {
//user not logged in, so need to initiate login
mAuthorization.authenticateUsingTokenExchange(mCtx, token, true, mLoginCallback);
}
토큰이 보안 저장소에 저장되어 있는 경우 해당 응용 프로그램이 원래 사용한 모바일 백엔드와 계속 연관됩니다. 따라서 앱이 다른 모바일 백엔드 (또는 모바일 백엔드 버전) 를 사용하도록 업데이트된 경우 저장된 토큰을 지우고 다시 인증해야 합니다.
mAuthorization.clearSSOTokenExchange(mCtx);
mAuthorization.authenticateUsingTokenExchange(mCtx, token, true, mLoginCallback);
기본 HTTP 인증 정보
HTTP 기본 기능을 사용한 사용자 인증은 OAuth 를 사용한 인증과 유사합니다.
먼저 권한 부여 에이전트를 초기화하고 인증 유형을 BASIC_AUTH
로 설정합니다.
private AuthorizationAgent mAuthorization;
private MobileBackend mobileBackend;
try {
mobileBackend = MobileManager.getManager().getMobileBackend(this);
} catch (ServiceProxyException e) {
e.printStackTrace();
}
mAuthorization = mobileBackend.getAuthorization(AuthType.BASIC_AUTH)
그런 다음 authenticate
메소드를 사용하여 인증을 시도합니다. 호출에 Android 컨텍스트의 매개변수, 사용자 이름, 비밀번호 및 권한 부여 프로세스를 완료하는 콜백이 포함됩니다.
TextView username, password;
username = (TextView) findViewById(R.id.username);
password = (TextView) findViewById(R.id.password);
String userName = username.getText().toString();
String passWord = password.getText().toString();
mAuthorization.authenticate(mCtx, userName, passWord, mLoginCallback);
콜백에 대한 정의는 다음과 같습니다.
AuthorizationCallback mLoginCallback = new AuthorizationCallback() {
@Override
public void onCompletion(ServiceProxyException exception) {
Log.d(TAG, "OnCompletion Auth Callback");
if (exception != null) {
Log.e(TAG, "Exception while receiving the Access Token", exception);
} else {
Log.e(TAG, "Authorization successful");
}
}
}
Facebook 로그인 사용 정보
Facebook 로그인을 사용하려는 경우 oracle_mobile_android_social
라이브러리의 클래스를 사용할 수 있습니다.
먼저 권한 부여 에이전트를 초기화하고 인증 유형을 Facebook
로 설정합니다.
SocialAuthorizationAgent mAuthorization;
SocialMobileBackend socialMobileBackend;
try {
socialMobileBackend = SocialMobileBackendManager.getManager().getMobileBackend(mCtx);
} catch(ServiceProxyException e){
e.printStackTrace();
}
mAuthorization = socialMobileBackend.getSocialAuthorization(); mAuthorization.setAuthType(AuthType.FACEBOOK);
Facebook SDK에서 CallbackManager
객체를 사용하여 인증을 시작합니다.
private CallbackManager callbackManager;
mAuthorization.setup(getApplicationContext(), callback);
callbackManager = mAuthorization.getCallBackManager();
mAuthorization.authenticateSocial(mCtx);
위에 전달되는 callback
에 사용할 수 있는 코드는 다음과 같습니다.
private FacebookCallback<LoginResult> callback = new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
Log.e(TAG, "facebook login successful.");
}
@Override
public void onCancel() {
}
@Override
public void onError(FacebookException e) {
}
};
콜백을 사용하려면 onActivityResult()
메소드를 무효화합니다.
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
callbackManager.onActivityResult(requestCode, resultCode, data);