Skip to content

Commit

Permalink
Merge branch 'dev'
Browse files Browse the repository at this point in the history
  • Loading branch information
weijjia committed Nov 23, 2015
2 parents cb2a5de + 58922e1 commit 662c2a8
Show file tree
Hide file tree
Showing 13 changed files with 195 additions and 21 deletions.
6 changes: 3 additions & 3 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,10 @@
<properties>
<scm.branch>master</scm.branch>
<maven.version>3.1.1</maven.version>
<adal.version>1.1.10</adal.version>
<android.platform.maven.plugin>18</android.platform.maven.plugin>
<adal.version>1.1.11</adal.version>
<android.platform.maven.plugin>21</android.platform.maven.plugin>
<android.version>[4.1.1.4,)</android.version>
<android.support.version>[18,)</android.support.version>
<android.support.version>[21,)</android.support.version>
<android.support.name>support-v4</android.support.name>
<gson.name>gson</gson.name>
<gson.version>2.3.1</gson.version>
Expand Down
2 changes: 1 addition & 1 deletion samples/hello/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

<uses-sdk
android:minSdkVersion="14"
android:targetSdkVersion="19" />
android:targetSdkVersion="21" />

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
Expand Down
2 changes: 1 addition & 1 deletion samples/hello/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
<packaging>apk</packaging>
<name>Hello App for Demo</name>
<properties>
<android.support.version>[18,)</android.support.version>
<android.support.version>[21,)</android.support.version>
</properties>
<dependencies>
<dependency>
Expand Down
2 changes: 1 addition & 1 deletion samples/hello/project.properties
Original file line number Diff line number Diff line change
Expand Up @@ -11,5 +11,5 @@
#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt

# Project target.
target=android-19
target=android-21
android.library.reference.1=../../src
5 changes: 2 additions & 3 deletions src/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,10 @@

<uses-sdk
android:minSdkVersion="14"
android:targetSdkVersion="19" />
android:targetSdkVersion="21" />

<application
android:allowBackup="true"
android:theme="@style/AppTheme" >
android:allowBackup="true">
<activity android:name="com.microsoft.aad.adal.AuthenticationActivity" >
</activity>
</application>
Expand Down
10 changes: 5 additions & 5 deletions src/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,16 +4,16 @@
<modelVersion>4.0.0</modelVersion>
<groupId>com.microsoft.aad</groupId>
<artifactId>adal</artifactId>
<version>1.1.10</version>
<version>1.1.11</version>
<packaging>aar</packaging>
<name>adal</name>
<properties>
<scm.branch>master</scm.branch>
<maven.version>3.1.1</maven.version>
<adal.version>1.1.10</adal.version>
<android.platform.maven.plugin>18</android.platform.maven.plugin>
<adal.version>1.1.11</adal.version>
<android.platform.maven.plugin>21</android.platform.maven.plugin>
<android.version>[4.1.1.4,)</android.version>
<android.support.version>[18,)</android.support.version>
<android.support.version>[21,)</android.support.version>
<android.support.name>support-v4</android.support.name>
<gson.name>gson</gson.name>
<gson.version>2.3.1</gson.version>
Expand Down Expand Up @@ -167,7 +167,7 @@
<resourceDirectory>${project.basedir}/res</resourceDirectory>
<nativeLibrariesDirectory>${project.basedir}/src/main/native</nativeLibrariesDirectory>
<sdk>
<platform>18</platform>
<platform>21</platform>
</sdk>
<dexCoreLibrary>true</dexCoreLibrary>
<deleteConflictingFiles>true</deleteConflictingFiles>
Expand Down
2 changes: 1 addition & 1 deletion src/project.properties
Original file line number Diff line number Diff line change
Expand Up @@ -11,5 +11,5 @@
#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt

# Project target.
target=android-19
target=android-21
android.library=true
31 changes: 31 additions & 0 deletions src/src/com/microsoft/aad/adal/AuthenticationActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,10 @@
import java.security.KeyStoreException;
import java.security.NoSuchAlgorithmException;
import java.security.NoSuchProviderException;
import java.security.PrivateKey;
import java.security.UnrecoverableEntryException;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import java.security.spec.InvalidKeySpecException;
import java.util.UUID;

Expand All @@ -41,20 +43,26 @@
import android.accounts.AccountAuthenticatorResponse;
import android.accounts.AccountManager;
import android.annotation.SuppressLint;
import android.annotation.TargetApi;
import android.app.Activity;
import android.app.ProgressDialog;
import android.app.Service;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.AsyncTask;
import android.os.Build;
import android.os.Bundle;
import android.security.KeyChain;
import android.security.KeyChainAliasCallback;
import android.security.KeyChainException;
import android.support.v4.content.LocalBroadcastManager;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.view.Window;
import android.view.inputmethod.InputMethodManager;
import android.webkit.ClientCertRequest;
import android.webkit.CookieManager;
import android.webkit.CookieSyncManager;
import android.webkit.WebView;
Expand Down Expand Up @@ -642,6 +650,29 @@ public void setPKeyAuthStatus(boolean status) {
public void postRunnable(Runnable item) {
mWebView.post(item);
}

@TargetApi(Build.VERSION_CODES.LOLLIPOP)
@Override
public void onReceivedClientCertRequest (WebView view, final ClientCertRequest request){
Logger.v(TAG + "onReceivedClientCertRequest", "onReceivedClientCertRequest");
KeyChain.choosePrivateKeyAlias(AuthenticationActivity.this, new KeyChainAliasCallback() {

@Override
public void alias(String alias) {
try {
final X509Certificate[] certChain = KeyChain.getCertificateChain(
getApplicationContext(), alias);
final PrivateKey privateKey = KeyChain.getPrivateKey(mCallingContext, alias);
request.proceed(privateKey, certChain);

} catch (KeyChainException e) {
Log.e(TAG, "KeyChain exception", e);
} catch (InterruptedException e) {
Log.e(TAG, "InterruptedException exception", e);
}
}
}, request.getKeyTypes(), request.getPrincipals(), request.getHost(), request.getPort(), null);
}
}

/**
Expand Down
2 changes: 1 addition & 1 deletion src/src/com/microsoft/aad/adal/AuthenticationContext.java
Original file line number Diff line number Diff line change
Expand Up @@ -1924,6 +1924,6 @@ public static String getVersionName() {
// Package manager does not report for ADAL
// AndroidManifest files are not merged, so it is returning hard coded
// value
return "1.1.10";
return "1.1.11";
}
}
4 changes: 2 additions & 2 deletions src/src/com/microsoft/aad/adal/BasicWebViewClient.java
Original file line number Diff line number Diff line change
Expand Up @@ -68,8 +68,7 @@ public BasicWebViewClient(Context appContext, String redirect, String queryParam

public abstract void setPKeyAuthStatus(boolean status);

public abstract void postRunnable(Runnable item);

public abstract void postRunnable(Runnable item);

@Override
public void onReceivedHttpAuthRequest(WebView view, final HttpAuthHandler handler,
Expand Down Expand Up @@ -144,6 +143,7 @@ public void onPageFinished(WebView view, String url) {

@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
Logger.v(TAG + "onPageStarted", "page is started with the url " + url);
super.onPageStarted(view, url, favicon);
showSpinner(true);
}
Expand Down
20 changes: 18 additions & 2 deletions src/src/com/microsoft/aad/adal/BrokerProxy.java
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,9 @@
import java.io.IOException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.List;

import android.accounts.Account;
Expand Down Expand Up @@ -299,9 +302,22 @@ private AuthenticationResult getResultFromBrokerResponse(Bundle bundleResult) {

// IDtoken is not present in the current broker user model
UserInfo userinfo = UserInfo.getUserInfoFromBrokerResult(bundleResult);
final String tenantId = bundleResult.getString(AuthenticationConstants.Broker.ACCOUNT_USERINFO_TENANTID, "");

final Date expires;
if (bundleResult.getLong(AuthenticationConstants.Broker.ACCOUNT_EXPIREDATE) == 0) {
Logger.v(TAG, "Broker doesn't return expire date, set it current date plus one hour");
final Calendar currentTime = new GregorianCalendar();
currentTime.add(Calendar.SECOND, AuthenticationConstants.DEFAULT_EXPIRATION_TIME_SEC);;
expires = currentTime.getTime();
}
else {
expires = new Date(bundleResult.getLong(AuthenticationConstants.Broker.ACCOUNT_EXPIREDATE));
}

AuthenticationResult result = new AuthenticationResult(
bundleResult.getString(AccountManager.KEY_AUTHTOKEN), "", null, false,
userinfo, "", "");
bundleResult.getString(AccountManager.KEY_AUTHTOKEN), "", expires, false,
userinfo, tenantId, "");
return result;
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -381,6 +381,7 @@ public void testAcquireToken_userId() throws ClassNotFoundException, IllegalArgu
FileMockContext mockContext = new FileMockContext(getContext());
final AuthenticationContext context = getAuthenticationContext(mockContext,
"https://login.windows.net/common", false, null);
setConnectionAvailable(context, true);
final MockActivity testActivity = new MockActivity();
final CountDownLatch signal = new CountDownLatch(1);
MockAuthenticationCallback callback = new MockAuthenticationCallback(signal);
Expand Down Expand Up @@ -416,6 +417,7 @@ public void testEmptyRedirect() throws ClassNotFoundException, IllegalArgumentEx
FileMockContext mockContext = new FileMockContext(getContext());
final AuthenticationContext context = getAuthenticationContext(mockContext,
"https://login.windows.net/common", false, null);
setConnectionAvailable(context, true);
final MockActivity testActivity = new MockActivity();
final CountDownLatch signal = new CountDownLatch(1);
MockAuthenticationCallback callback = new MockAuthenticationCallback(signal);
Expand All @@ -441,6 +443,7 @@ public void testPrompt() throws IllegalArgumentException, NoSuchFieldException,
FileMockContext mockContext = new FileMockContext(getContext());
final AuthenticationContext context = getAuthenticationContext(mockContext,
"https://login.windows.net/common", false, null);
setConnectionAvailable(context, true);
final MockActivity testActivity = new MockActivity();
final CountDownLatch signal = new CountDownLatch(1);
MockAuthenticationCallback callback = new MockAuthenticationCallback(signal);
Expand Down Expand Up @@ -484,6 +487,7 @@ public void testExtraParams() throws IllegalArgumentException, NoSuchFieldExcept
FileMockContext mockContext = new FileMockContext(getContext());
final AuthenticationContext context = getAuthenticationContext(mockContext,
"https://login.windows.net/common", false, null);
setConnectionAvailable(context, true);
final MockActivity testActivity = new MockActivity();
final CountDownLatch signal = new CountDownLatch(1);
String expected = "&extraParam=1";
Expand Down Expand Up @@ -806,6 +810,7 @@ public void testAcquireTokenValidateAuthorityReturnsValid() throws InterruptedEx
FileMockContext mockContext = new FileMockContext(getContext());
AuthenticationContext context = new AuthenticationContext(mockContext, VALID_AUTHORITY,
true);
setConnectionAvailable(context, true);
final CountDownLatch signal = new CountDownLatch(1);
MockActivity testActivity = new MockActivity();
testActivity.mSignal = signal;
Expand All @@ -832,6 +837,7 @@ public void testCorrelationId_InDiscovery() throws InterruptedException,
FileMockContext mockContext = new FileMockContext(getContext());
AuthenticationContext context = getAuthenticationContext(mockContext, VALID_AUTHORITY,
true, null);
setConnectionAvailable(context, true);
final CountDownLatch signal = new CountDownLatch(1);
UUID correlationId = UUID.randomUUID();
MockActivity testActivity = new MockActivity();
Expand Down Expand Up @@ -921,6 +927,7 @@ public void testAcquireTokenWithoutValidation() throws InterruptedException,
FileMockContext mockContext = new FileMockContext(getContext());
final AuthenticationContext context = getAuthenticationContext(mockContext,
VALID_AUTHORITY, false, null);
setConnectionAvailable(context, true);
final MockActivity testActivity = new MockActivity();
final CountDownLatch signal = new CountDownLatch(1);
testActivity.mSignal = signal;
Expand Down Expand Up @@ -1798,7 +1805,7 @@ public void testAcquireTokenMultiResourceToken_UserId() throws InterruptedExcept

clearCache(context);
}

@SmallTest
public void testAcquireTokenMultiResource_ADFSIssue() throws InterruptedException,
IllegalArgumentException, NoSuchFieldException, IllegalAccessException,
Expand Down
Loading

0 comments on commit 662c2a8

Please sign in to comment.