Authentifizierungsoptionen für Oracle Mobile Hub-Anwendungen
Ihre Benutzer können sich mit Ihrer Oracle Mobile Hub-Anwendung mit einer Reihe von Technologien authentifizieren, einschließlich OAuth, Single Sign-On, HTTP-Basisauthentifizierung und Facebook-Anmeldung.
Info zu OAuth Consumer
Ihre Benutzer können sich mit Ihren Oracle Mobile Hub Android-Anwendungen mit OAuth Consumer authentifizieren.
Bevor Sie den Autorisierungs-Agent initialisieren und den Authentifizierungstyp auf OAUTH
setzen:
private AuthorizationAgent mAuthorization;
private MobileBackend mobileBackend;
try {
mobileBackend = MobileManager.getManager().getMobileBackend(this);
} catch (ServiceProxyException e) {
e.printStackTrace();
}
mAuthorization = mobileBackend.getAuthorization(AuthType.OAUTH);
Danach verwenden Sie die authenticate
-Methode, um die Authentifizierung zu versuchen. Der Aufruf enthält Parameter für Android-Kontext, Benutzername, Kennwort und einen Callback, der den Autorisierungsprozess abschließt:
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);
Im Folgenden finden Sie die Definition für den Callback:
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");
}
}
}
Informationen zur Single Sign-On-Authentifizierung mit einem Drittanbietertoken
Sie können Ihre Mobile-Anwendung mit einem Token authentifizieren, das von einem externen Provider ausgegeben wurde.
Zuerst muss die App ein Token vom externen Tokenausgebenden Benutzer abrufen. Die Art, wie Sie das Token abrufen können, variiert nach ausgebendem Benutzer.
Nachdem Sie das Token ausgeführt haben, initialisieren Sie den Autorisierungs-Agent und verwenden das Token in Ihrem Autorisierungsaufruf.
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);
Danach verwenden Sie die authenticateUsingTokenExchange
-Methode, um die Authentifizierung zu versuchen.
mAuthorization.authenticateUsingTokenExchange(mCtx, token, false, mLoginCallback);
Dies ist der Callback:
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();
}
}
};
Hinweis:
Die Standardablaufzeit für die Speicherung eines Drittanbietertokens in Oracle Mobile Hub beträgt 6 Stunden. Sie können diese Zeit anpassen, indem Sie die PolicySecurity_TokenExchangeTimeoutSecs
ändern.
Sie können die App auch so codieren, dass der Benutzer angemeldet bleibt, selbst wenn Sie die App schließen und neu starten.
Im obigen Beispiel wird die Methode authenticateUsingTokenExchange()
aufgerufen, wobei der dritte Parameter (storeToken
) auf false
gesetzt ist. Wenn Sie diesen Parameter auf true
setzen und der Tokenaustausch erfolgreich ist, wird das MCS-Token in einem sicheren Speicher gespeichert, und der Benutzer bleibt angemeldet, bis das Token abläuft.
Sie können dann die Methode loadSSOTokenExchange
für das Objekt Authorization
verwenden, um das gespeicherte Token zu laden. Wenn ein Token nicht aus dem sicheren Speicher abgerufen werden kann, gibt die Methode false
zurück.
Im Folgenden wird ein Code aufgeführt, der versucht, ein gespeichertes Token zu laden. Wenn der Vorgang nicht erfolgreich verläuft, wird der Authentifizierungsprozess neu gestartet:
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);
}
Wenn das Token im sicheren Speicher gespeichert ist, bleibt es mit dem mobilen Backend verknüpft, das die App ursprünglich verwendet hat. Wenn die App also mit einem anderen mobilen Backend (oder einer mobilen Backend-Version) aktualisiert wird, müssen Sie daher das gespeicherte Token löschen und erneut authentifizieren.
mAuthorization.clearSSOTokenExchange(mCtx);
mAuthorization.authenticateUsingTokenExchange(mCtx, token, true, mLoginCallback);
Info zur einfachen HTTP-Authentifizierung
Die Authentifizierung von Benutzern mit HTTP Basic entspricht der Authentifizierung mit OAuth.
Bevor Sie den Autorisierungs-Agent initialisieren und den Authentifizierungstyp auf BASIC_AUTH
setzen:
private AuthorizationAgent mAuthorization;
private MobileBackend mobileBackend;
try {
mobileBackend = MobileManager.getManager().getMobileBackend(this);
} catch (ServiceProxyException e) {
e.printStackTrace();
}
mAuthorization = mobileBackend.getAuthorization(AuthType.BASIC_AUTH)
Danach verwenden Sie die authenticate
-Methode, um die Authentifizierung zu versuchen. Der Aufruf enthält Parameter für Android-Kontext, Benutzername, Kennwort und einen Callback, der den Autorisierungsprozess abschließt.
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);
Im Folgenden finden Sie die Definition für den Callback:
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-Anmeldung verwenden
Wenn Sie Facebook-Anmeldung verwenden möchten, können Sie die Klassen in der Library oracle_mobile_android_social
verwenden.
Bevor Sie den Autorisierungs-Agent initialisieren und den Authentifizierungstyp auf Facebook
setzen:
SocialAuthorizationAgent mAuthorization;
SocialMobileBackend socialMobileBackend;
try {
socialMobileBackend = SocialMobileBackendManager.getManager().getMobileBackend(mCtx);
} catch(ServiceProxyException e){
e.printStackTrace();
}
mAuthorization = socialMobileBackend.getSocialAuthorization(); mAuthorization.setAuthType(AuthType.FACEBOOK);
Starten Sie die Authentifizierung mit einem CallbackManager
-Objekt aus FacebookSDK.
private CallbackManager callbackManager;
mAuthorization.setup(getApplicationContext(), callback);
callbackManager = mAuthorization.getCallBackManager();
mAuthorization.authenticateSocial(mCtx);
Der folgende Code kann für die callback
verwendet werden, die oben übergeben wird:
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) {
}
};
Setzen Sie die onActivityResult()
-Methode außer Kraft, um den Callback zu verwenden:
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
callbackManager.onActivityResult(requestCode, resultCode, data);