From 75842248b992a64bf117091c2433af0a33fd7084 Mon Sep 17 00:00:00 2001 From: Petro Somka Date: Fri, 18 Jan 2019 18:45:59 -0800 Subject: [PATCH] making api more consistent and expressive --- .../aad/msal4j/ClientApplicationBase.java | 24 ++++--------------- .../msal4j/ConfidentialClientApplication.java | 2 +- .../aad/msal4j/PublicClientApplication.java | 4 ++-- .../public-client/IntegratedAuthFlow.java | 2 +- src/samples/public-client/RTFlow.java | 2 +- .../UsernamePasswordFlowAsync.java | 2 +- .../aad/msal4jsample/BasicFilter.java | 2 +- .../ConfidentialClientApplicationTest.java | 20 ++++------------ .../msal4j/OAuthRequestValidationTest.java | 5 +--- .../msal4j/PublicClientApplicationTest.java | 13 +--------- 10 files changed, 18 insertions(+), 58 deletions(-) diff --git a/src/main/java/com/microsoft/aad/msal4j/ClientApplicationBase.java b/src/main/java/com/microsoft/aad/msal4j/ClientApplicationBase.java index de3b3e2b..5dd6e81b 100644 --- a/src/main/java/com/microsoft/aad/msal4j/ClientApplicationBase.java +++ b/src/main/java/com/microsoft/aad/msal4j/ClientApplicationBase.java @@ -160,17 +160,18 @@ protected static void validateNotNull(String name, Object obj) { * Acquires security token from the authority using an authorization code * previously received. * + * @param scopes scopes of the access request * @param authorizationCode The authorization code received from service authorization endpoint. * @param redirectUri (also known as Reply URI or Reply URL), * is the URI at which Azure AD will contact back the application with the tokens. * This redirect URI needs to be registered in the app registration portal. - * @param scopes scopes of the access request * @return A {@link Future} object representing the * {@link AuthenticationResult} of the call. It contains Access * Token, Refresh Token and the Access Token's expiration time. */ - public CompletableFuture acquireTokenByAuthorizationCode(String authorizationCode, - URI redirectUri, String scopes) + public CompletableFuture acquireTokenByAuthorizationCode(String scopes, + String authorizationCode, + URI redirectUri) { validateNotBlank("authorizationCode", authorizationCode); validateNotBlank("redirectUri", authorizationCode); @@ -181,23 +182,6 @@ public CompletableFuture acquireTokenByAuthorizationCode(S return this.acquireToken(authGrant, clientAuthentication); } - /** - * Acquires security token from the authority using an authorization code - * previously received. - * - * @param authorizationCode The authorization code received from service authorization endpoint. - * @param redirectUri (also known as Reply URI or Reply URL), - * is the URI at which Azure AD will contact back the application with the tokens. - * This redirect URI needs to be registered in the app registration portal. - * @return A {@link CompletableFuture} object representing the - * {@link AuthenticationResult} of the call. It contains Access - * Token, Refresh Token and the Access Token's expiration time. - */ - public CompletableFuture acquireTokenByAuthorizationCode(String authorizationCode, URI redirectUri) - { - return acquireTokenByAuthorizationCode(authorizationCode, redirectUri, null); - } - /** * Acquires a security token from the authority using a Refresh Token * previously received. diff --git a/src/main/java/com/microsoft/aad/msal4j/ConfidentialClientApplication.java b/src/main/java/com/microsoft/aad/msal4j/ConfidentialClientApplication.java index 87ab458f..b1c94777 100644 --- a/src/main/java/com/microsoft/aad/msal4j/ConfidentialClientApplication.java +++ b/src/main/java/com/microsoft/aad/msal4j/ConfidentialClientApplication.java @@ -87,7 +87,7 @@ private ClientAuthentication createClientAuthFromClientAssertion( * Token and the Access Token's expiration time. Refresh Token * property will be null for this overload. */ - public CompletableFuture acquireToken(final String scopes) { + public CompletableFuture acquireTokenForClient(String scopes) { validateNotBlank("scopes", scopes); MsalOAuthAuthorizationGrant authGrant = new MsalOAuthAuthorizationGrant( diff --git a/src/main/java/com/microsoft/aad/msal4j/PublicClientApplication.java b/src/main/java/com/microsoft/aad/msal4j/PublicClientApplication.java index d45a4c89..ac5aac23 100644 --- a/src/main/java/com/microsoft/aad/msal4j/PublicClientApplication.java +++ b/src/main/java/com/microsoft/aad/msal4j/PublicClientApplication.java @@ -64,7 +64,7 @@ private void initClientAuthentication(String clientId){ * {@link AuthenticationResult} of the call. It contains Access * Token, Refresh Token and the Access Token's expiration time. */ - public CompletableFuture acquireToken(String scopes, String username, String password) { + public CompletableFuture acquireTokenByUsernamePassword(String scopes, String username, String password) { validateNotBlank("scopes", scopes); validateNotBlank("username", username); @@ -83,7 +83,7 @@ public CompletableFuture acquireToken(String scopes, Strin * {@link AuthenticationResult} of the call. It contains Access * Token, Refresh Token and the Access Token's expiration time. */ - public CompletableFuture acquireToken(String scopes, String username) { + public CompletableFuture acquireTokenByKerberosAuth(String scopes, String username) { validateNotBlank("scopes", scopes); validateNotBlank("username", username); diff --git a/src/samples/public-client/IntegratedAuthFlow.java b/src/samples/public-client/IntegratedAuthFlow.java index 71e94d5d..e40f38d6 100644 --- a/src/samples/public-client/IntegratedAuthFlow.java +++ b/src/samples/public-client/IntegratedAuthFlow.java @@ -41,7 +41,7 @@ private static AuthenticationResult getAccessTokenByIntegratedAuth() throws Exce .build(); Future futureAuthenticationResult = - app.acquireToken(TestData.GRAPH_DEFAULT_SCOPE, TestData.USER_NAME); + app.acquireTokenByKerberosAuth(TestData.GRAPH_DEFAULT_SCOPE, TestData.USER_NAME); AuthenticationResult result = futureAuthenticationResult.get(); diff --git a/src/samples/public-client/RTFlow.java b/src/samples/public-client/RTFlow.java index f53966e5..f86cd395 100644 --- a/src/samples/public-client/RTFlow.java +++ b/src/samples/public-client/RTFlow.java @@ -42,7 +42,7 @@ private static AuthenticationResult getAccessTokenFromUserCredentials() .authority(TestData.AUTHORITY) .build(); - Future future = app.acquireToken + Future future = app.acquireTokenByUsernamePassword (TestData.GRAPH_DEFAULT_SCOPE, TestData.USER_NAME, TestData.USER_PASSWORD); AuthenticationResult result = future.get(); diff --git a/src/samples/public-client/UsernamePasswordFlowAsync.java b/src/samples/public-client/UsernamePasswordFlowAsync.java index a576bcf0..202129c7 100644 --- a/src/samples/public-client/UsernamePasswordFlowAsync.java +++ b/src/samples/public-client/UsernamePasswordFlowAsync.java @@ -37,7 +37,7 @@ private static void getAccessTokenFromUserCredentials() throws Exception { .authority(TestData.AUTHORITY) .build(); - CompletableFuture future = app.acquireToken + CompletableFuture future = app.acquireTokenByUsernamePassword (TestData.GRAPH_DEFAULT_SCOPE, TestData.USER_NAME, TestData.USER_PASSWORD); future.handle((res, ex) -> { diff --git a/src/samples/web-app-samples-for-msal4j/src/main/java/com/microsoft/aad/msal4jsample/BasicFilter.java b/src/samples/web-app-samples-for-msal4j/src/main/java/com/microsoft/aad/msal4jsample/BasicFilter.java index a9775db2..5478a205 100644 --- a/src/samples/web-app-samples-for-msal4j/src/main/java/com/microsoft/aad/msal4jsample/BasicFilter.java +++ b/src/samples/web-app-samples-for-msal4j/src/main/java/com/microsoft/aad/msal4jsample/BasicFilter.java @@ -266,7 +266,7 @@ private AuthenticationResult getAccessTokenByAuthCode( ConfidentialClientApplication app = createClientApplication(); Future future = app - .acquireTokenByAuthorizationCode(authCode, new URI(currentUri), null); + .acquireTokenByAuthorizationCode(null, authCode, new URI(currentUri)); result = future.get(); } catch (ExecutionException e) { diff --git a/src/test/java/com/microsoft/aad/msal4j/ConfidentialClientApplicationTest.java b/src/test/java/com/microsoft/aad/msal4j/ConfidentialClientApplicationTest.java index 83de1a78..bd2b7fac 100644 --- a/src/test/java/com/microsoft/aad/msal4j/ConfidentialClientApplicationTest.java +++ b/src/test/java/com/microsoft/aad/msal4j/ConfidentialClientApplicationTest.java @@ -30,14 +30,9 @@ import org.powermock.core.classloader.annotations.PrepareForTest; import org.powermock.modules.testng.PowerMockTestCase; import org.testng.Assert; -import org.testng.annotations.AfterTest; -import org.testng.annotations.BeforeTest; import org.testng.annotations.Test; -import javax.net.ssl.SSLSocketFactory; import java.io.FileInputStream; -import java.net.MalformedURLException; -import java.net.Proxy; import java.net.URI; import java.security.KeyStore; import java.security.MessageDigest; @@ -46,10 +41,6 @@ import java.security.cert.CertificateEncodingException; import java.security.cert.X509Certificate; import java.util.Date; -import java.util.Map; -import java.util.concurrent.ExecutionException; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; import java.util.concurrent.Future; import static org.testng.Assert.*; @@ -80,8 +71,8 @@ public void testAcquireTokenAuthCode_ClientCredential() throws Exception { false)); PowerMock.replay(app); Future result = app - .acquireTokenByAuthorizationCode("auth_code", new URI( - TestConfiguration.AAD_DEFAULT_REDIRECT_URI), null); + .acquireTokenByAuthorizationCode(null, "auth_code", + new URI(TestConfiguration.AAD_DEFAULT_REDIRECT_URI)); AuthenticationResult ar = result.get(); Assert.assertNotNull(ar); PowerMock.verifyAll(); @@ -118,9 +109,8 @@ public void testAcquireTokenAuthCode_KeyCredential() throws Exception { PowerMock.replay(app); Future result = app - .acquireTokenByAuthorizationCode("auth_code", new URI( - TestConfiguration.AAD_DEFAULT_REDIRECT_URI), - null); + .acquireTokenByAuthorizationCode(null, "auth_code", + new URI(TestConfiguration.AAD_DEFAULT_REDIRECT_URI)); AuthenticationResult ar = result.get(); Assert.assertNotNull(ar); PowerMock.verifyAll(); @@ -155,7 +145,7 @@ public void testAcquireToken_KeyCred() throws Exception { new Date().getTime(), null, null, false)); PowerMock.replay(app); - final Future result = app.acquireToken( + final Future result = app.acquireTokenForClient( TestConfiguration.AAD_RESOURCE_ID); final AuthenticationResult ar = result.get(); assertNotNull(ar); diff --git a/src/test/java/com/microsoft/aad/msal4j/OAuthRequestValidationTest.java b/src/test/java/com/microsoft/aad/msal4j/OAuthRequestValidationTest.java index 74886f5f..d2cdc93d 100644 --- a/src/test/java/com/microsoft/aad/msal4j/OAuthRequestValidationTest.java +++ b/src/test/java/com/microsoft/aad/msal4j/OAuthRequestValidationTest.java @@ -47,8 +47,6 @@ import java.util.Map; import java.util.UUID; import java.util.concurrent.ExecutionException; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; import java.util.concurrent.Future; import com.nimbusds.jose.JOSEException; @@ -63,7 +61,6 @@ import org.powermock.core.classloader.annotations.PrepareForTest; import org.powermock.modules.testng.PowerMockTestCase; import org.testng.Assert; -import org.testng.annotations.AfterClass; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; @@ -259,7 +256,7 @@ public void oAuthRequest_for_acquireTokenByClientAssertion() throws Exception { .build(); // Using ClientAssertion for Client Authentication and as the authorization grant - Future future = app.acquireToken(SCOPES); + Future future = app.acquireTokenForClient(SCOPES); future.get(); } diff --git a/src/test/java/com/microsoft/aad/msal4j/PublicClientApplicationTest.java b/src/test/java/com/microsoft/aad/msal4j/PublicClientApplicationTest.java index e6651d61..9714e82c 100644 --- a/src/test/java/com/microsoft/aad/msal4j/PublicClientApplicationTest.java +++ b/src/test/java/com/microsoft/aad/msal4j/PublicClientApplicationTest.java @@ -28,21 +28,12 @@ import static org.testng.Assert.assertTrue; import javax.net.ssl.SSLSocketFactory; -import java.io.FileInputStream; -import java.net.MalformedURLException; import java.net.Proxy; -import java.net.URI; -import java.security.KeyStore; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; -import java.security.PrivateKey; import java.security.cert.CertificateEncodingException; -import java.security.cert.X509Certificate; import java.util.Date; import java.util.Map; -import java.util.concurrent.ExecutionException; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; import java.util.concurrent.Future; import com.nimbusds.oauth2.sdk.auth.ClientAuthentication; @@ -52,8 +43,6 @@ import org.powermock.core.classloader.annotations.PrepareForTest; import org.powermock.modules.testng.PowerMockTestCase; import org.testng.Assert; -import org.testng.annotations.AfterTest; -import org.testng.annotations.BeforeTest; import org.testng.annotations.Test; @PowerMockIgnore({"javax.net.ssl.*"}) @@ -93,7 +82,7 @@ public void testAcquireToken_Username_Password() throws Exception { PowerMock.replay(app, response, UserDiscoveryRequest.class); Future result = - app.acquireToken("scopes", "username", "password"); + app.acquireTokenByUsernamePassword("scopes", "username", "password"); AuthenticationResult ar = result.get(); Assert.assertNotNull(ar);