A propos des options d'authentification pour vos applications Oracle Mobile Hub
Vos utilisateurs peuvent s'authentifier auprès de votre application Oracle Mobile Hub à l'aide d'un certain nombre de technologies, dont OAuth, l'accès avec connexion unique, l'authentification de base HTTP et la connexion Facebook.
A propos d'OAuth Consumer
Les utilisateurs peuvent s'authentifier auprès de vos applications Oracle Mobile Hub Android à l'aide du consommateur OAuth.
Commencez par initialiser l'agent d'autorisation et définissez le type d'authentification sur OAUTH
:
private AuthorizationAgent mAuthorization;
private MobileBackend mobileBackend;
try {
mobileBackend = MobileManager.getManager().getMobileBackend(this);
} catch (ServiceProxyException e) {
e.printStackTrace();
}
mAuthorization = mobileBackend.getAuthorization(AuthType.OAUTH);
Vous utilisez ensuite la méthode authenticate
pour tenter l'authentification. L'appel inclut des paramètres pour le contexte Android, le nom utilisateur, le mot de passe et un callback qui termine le processus d'autorisation :
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);
Voici la définition du 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");
}
}
}
A propos de l'authentification SSO (accès avec connexion unique) avec un jeton tiers
Vous pouvez authentifier votre application mobile à l'aide d'un jeton envoyé par un fournisseur tiers.
En premier lieu, votre application doit obtenir un jeton auprès de l'émetteur de jeton tiers. La façon dont vous pouvez obtenir l'unité lexicale varie en fonction de l'émetteur.
Une fois l'unité lexicale définie, initialisez l'agent d'autorisation et utilisez l'unité lexicale dans votre appel d'autorisation.
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);
Vous utilisez ensuite la méthode authenticateUsingTokenExchange
pour tenter l'authentification.
mAuthorization.authenticateUsingTokenExchange(mCtx, token, false, mLoginCallback);
Voici le 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();
}
}
};
Remarque :
Le délai d'expiration par défaut pour le stockage d'un jeton tiers dans Oracle Mobile Hub est de 6 heures. Vous pouvez ajuster cette durée en modifiant la règleSecurity_TokenExchangeTimeoutSecs
.
Vous pouvez également coder l'application pour maintenir la connexion de l'utilisateur, même lors de la fermeture et du redémarrage de l'application.
Dans l'exemple ci-dessus, la méthode authenticateUsingTokenExchange()
est appelée avec le troisième paramètre (storeToken
) défini sur false
. Si vous définissez ce paramètre sur true
et que l'échange de jetons fonctionne, le jeton MCS est stocké dans une banque sécurisée et l'utilisateur reste connecté jusqu'à expiration du jeton.
Vous pouvez ensuite utiliser la méthode loadSSOTokenExchange
sur l'objet Authorization
pour charger le jeton stocké. Si un jeton ne peut pas être extrait à partir de l'emplacement de stockage sécurisé, la méthode renvoie false
.
Voici un code qui tente de charger un jeton enregistré et, en cas d'échec, de redémarrage du processus d'authentification :
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);
}
Lorsque le jeton est stocké dans l'emplacement de stockage sécurisé, il reste associé au back-end mobile que l'application a initialement utilisé. Par conséquent, si l'application est mise à jour pour utiliser un back-end mobile différent (ou une version back-end mobile), vous devez effacer le jeton enregistré et réauthentifier.
mAuthorization.clearSSOTokenExchange(mCtx);
mAuthorization.authenticateUsingTokenExchange(mCtx, token, true, mLoginCallback);
A propos de l'authentification HTTP de base
L'authentification des utilisateurs à l'aide d'HTTP Basic est semblable à celle d'OAuth.
Commencez par initialiser l'agent d'autorisation et définissez le type d'authentification sur 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)
Vous utilisez ensuite la méthode authenticate
pour tenter l'authentification. L'appel inclut des paramètres pour le contexte Android, le nom utilisateur, le mot de passe et un callback qui termine le processus d'autorisation.
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);
Voici la définition du 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");
}
}
}
A propos de l'utilisation de la connexion à Facebook
Si vous voulez utiliser la connexion à Facebook, vous pouvez utiliser les classes dans la bibliothèque oracle_mobile_android_social
.
Commencez par initialiser l'agent d'autorisation et définissez le type d'authentification sur Facebook
:
SocialAuthorizationAgent mAuthorization;
SocialMobileBackend socialMobileBackend;
try {
socialMobileBackend = SocialMobileBackendManager.getManager().getMobileBackend(mCtx);
} catch(ServiceProxyException e){
e.printStackTrace();
}
mAuthorization = socialMobileBackend.getSocialAuthorization(); mAuthorization.setAuthType(AuthType.FACEBOOK);
A l'aide d'un objet CallbackManager
du SDK de Facebook, lancez l'authentification.
private CallbackManager callbackManager;
mAuthorization.setup(getApplicationContext(), callback);
callbackManager = mAuthorization.getCallBackManager();
mAuthorization.authenticateSocial(mCtx);
Voici le code que vous pouvez utiliser pour l'élément callback
transmis ci-dessus :
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) {
}
};
Remplacez la méthode onActivityResult()
pour utiliser le callback :
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
callbackManager.onActivityResult(requestCode, resultCode, data);