| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -54,6 +54,7 @@ ScribeJava support out-of-box several HTTP clients: | |||
| 54 | 54 | * Imgur (http://imgur.com/) | |
| 55 | 55 | * Kaixin 开心网 (http://www.kaixin001.com/) | |
| 56 | 56 | * LinkedIn (https://www.linkedin.com/) | |
| 57 | + * Microsoft Azure Active Directory (Azure AD) (http://azure.microsoft.com/) | ||
| 57 | 58 | * Microsoft Live (https://login.live.com/) | |
| 58 | 59 | * Mail.Ru (https://mail.ru/) | |
| 59 | 60 | * Meetup (http://www.meetup.com/) | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -1,6 +1,7 @@ | |||
| 1 | 1 | [SNAPSHOT] | |
| 2 | 2 | * drop optional dependency on Apache commons-codec | |
| 3 | 3 | * add API - Dataporten (https://docs.dataporten.no/) (thanks to https://github.com/xibriz) | |
| 4 | + * add API - Microsoft Azure Active Directory (Azure AD) (thanks to https://github.com/kaushalmall) | ||
| 4 | 5 | ||
| 5 | 6 | [5.0.0] | |
| 6 | 7 | * drop Java 7 backward compatibility support, become Java 8 only | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -0,0 +1,58 @@ | |||
| 1 | + package com.github.scribejava.apis; | ||
| 2 | + | ||
| 3 | + import com.github.scribejava.apis.service.MicrosoftAzureActiveDirectoryService; | ||
| 4 | + import com.github.scribejava.core.builder.api.ClientAuthenticationType; | ||
| 5 | + import com.github.scribejava.core.builder.api.DefaultApi20; | ||
| 6 | + import com.github.scribejava.core.model.OAuthConfig; | ||
| 7 | + | ||
| 8 | + /** | ||
| 9 | + * Microsoft Azure Active Directory Api | ||
| 10 | + * | ||
| 11 | + * @see <a href="https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-protocols-oauth-code"> | ||
| 12 | + * Understand the OAuth 2.0 authorization code flow in Azure AD | Microsoft Docs</a> | ||
| 13 | + * @see <a | ||
| 14 | + * href="https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-devquickstarts-webapp-java"> | ||
| 15 | + * Azure AD Java web app Getting Started | Microsoft Docs</a> | ||
| 16 | + * @see <a href="https://msdn.microsoft.com/en-us/library/azure/ad/graph/api/signed-in-user-operations"> | ||
| 17 | + * Azure AD Graph API Operations on the Signed-in User</a> | ||
| 18 | + * @see <a href="https://portal.azure.com">https://portal.azure.com</a> | ||
| 19 | + */ | ||
| 20 | + public class MicrosoftAzureActiveDirectoryApi extends DefaultApi20 { | ||
| 21 | + | ||
| 22 | + private static final String MSFT_GRAPH_URL = "https://graph.windows.net"; | ||
| 23 | + | ||
| 24 | + private static final String MSFT_LOGIN_URL = "https://login.microsoftonline.com"; | ||
| 25 | + private static final String SLASH = "/"; | ||
| 26 | + private static final String COMMON = "common"; | ||
| 27 | + private static final String TOKEN_URI = "oauth2/token"; | ||
| 28 | + private static final String AUTH_URI = "oauth2/authorize?resource=" + MSFT_GRAPH_URL; | ||
| 29 | + | ||
| 30 | + private static class InstanceHolder { | ||
| 31 | + | ||
| 32 | + private static final MicrosoftAzureActiveDirectoryApi INSTANCE = new MicrosoftAzureActiveDirectoryApi(); | ||
| 33 | + } | ||
| 34 | + | ||
| 35 | + public static MicrosoftAzureActiveDirectoryApi instance() { | ||
| 36 | + return InstanceHolder.INSTANCE; | ||
| 37 | + } | ||
| 38 | + | ||
| 39 | + @Override | ||
| 40 | + public String getAccessTokenEndpoint() { | ||
| 41 | + return MSFT_LOGIN_URL + SLASH + COMMON + SLASH + TOKEN_URI; | ||
| 42 | + } | ||
| 43 | + | ||
| 44 | + @Override | ||
| 45 | + protected String getAuthorizationBaseUrl() { | ||
| 46 | + return MSFT_LOGIN_URL + SLASH + COMMON + SLASH + AUTH_URI; | ||
| 47 | + } | ||
| 48 | + | ||
| 49 | + @Override | ||
| 50 | + public MicrosoftAzureActiveDirectoryService createService(OAuthConfig config) { | ||
| 51 | + return new MicrosoftAzureActiveDirectoryService(this, config); | ||
| 52 | + } | ||
| 53 | + | ||
| 54 | + @Override | ||
| 55 | + public ClientAuthenticationType getClientAuthenticationType() { | ||
| 56 | + return ClientAuthenticationType.REQUEST_BODY; | ||
| 57 | + } | ||
| 58 | + } | ||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -0,0 +1,22 @@ | |||
| 1 | + package com.github.scribejava.apis.service; | ||
| 2 | + | ||
| 3 | + import com.github.scribejava.core.builder.api.DefaultApi20; | ||
| 4 | + import com.github.scribejava.core.model.OAuthConfig; | ||
| 5 | + import com.github.scribejava.core.model.OAuthRequest; | ||
| 6 | + import com.github.scribejava.core.oauth.OAuth20Service; | ||
| 7 | + | ||
| 8 | + public class MicrosoftAzureActiveDirectoryService extends OAuth20Service { | ||
| 9 | + | ||
| 10 | + private static final String ACCEPTED_FORMAT | ||
| 11 | + = "application/json; odata=minimalmetadata; streaming=true; charset=utf-8"; | ||
| 12 | + | ||
| 13 | + public MicrosoftAzureActiveDirectoryService(DefaultApi20 api, OAuthConfig config) { | ||
| 14 | + super(api, config); | ||
| 15 | + } | ||
| 16 | + | ||
| 17 | + @Override | ||
| 18 | + public void signRequest(String accessToken, OAuthRequest request) { | ||
| 19 | + super.signRequest(accessToken, request); | ||
| 20 | + request.addHeader("Accept", ACCEPTED_FORMAT); | ||
| 21 | + } | ||
| 22 | + } | ||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -1,6 +1,6 @@ | |||
| 1 | 1 | package com.github.scribejava.apis.examples; | |
| 2 | 2 | ||
| 3 | - import com.github.scribejava.apis.AzureActiveDirectoryApi; | ||
| 3 | + import com.github.scribejava.apis.MicrosoftAzureActiveDirectoryApi; | ||
| 4 | 4 | import com.github.scribejava.core.builder.ServiceBuilder; | |
| 5 | 5 | import com.github.scribejava.core.model.OAuth2AccessToken; | |
| 6 | 6 | import com.github.scribejava.core.model.OAuthRequest; | |
@@ -12,14 +12,12 @@ | |||
| 12 | 12 | import java.util.Scanner; | |
| 13 | 13 | import java.util.concurrent.ExecutionException; | |
| 14 | 14 | ||
| 15 | - | ||
| 16 | - | ||
| 17 | - public class MicrosoftAzureExample { | ||
| 15 | + public class MicrosoftAzureActiveDirectoryExample { | ||
| 18 | 16 | ||
| 19 | 17 | private static final String NETWORK_NAME = "Microsoft Azure Active Directory"; | |
| 20 | 18 | private static final String PROTECTED_RESOURCE_URL = "https://graph.windows.net/me?api-version=1.6"; | |
| 21 | 19 | ||
| 22 | - private MicrosoftAzureExample(){ | ||
| 20 | + private MicrosoftAzureActiveDirectoryExample() { | ||
| 23 | 21 | ||
| 24 | 22 | } | |
| 25 | 23 | ||
@@ -31,7 +29,7 @@ public static void main(String... args) throws IOException, InterruptedException | |||
| 31 | 29 | .apiSecret(clientSecret) | |
| 32 | 30 | .scope("openid") | |
| 33 | 31 | .callback("http://www.example.com/oauth_callback/") | |
| 34 | - .build(AzureActiveDirectoryApi.instance()); | ||
| 32 | + .build(MicrosoftAzureActiveDirectoryApi.instance()); | ||
| 35 | 33 | final Scanner in = new Scanner(System.in, "UTF-8"); | |
| 36 | 34 | ||
| 37 | 35 | System.out.println("=== " + NETWORK_NAME + "'s OAuth Workflow ==="); | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -41,9 +41,4 @@ public interface OAuthConstants { | |||
| 41 | 41 | ||
| 42 | 42 | //not OAuth specific | |
| 43 | 43 | String USER_AGENT_HEADER_NAME = "User-Agent"; | |
| 44 | - String CONTENT_TYPE = "Content-Type"; | ||
| 45 | - String APPLICATION_X_WWW_FORM_URLENCODED = "application/x-www-form-urlencoded"; | ||
| 46 | - String AUTHORIZATION = "Authorization"; | ||
| 47 | - String BEARER = "Bearer "; | ||
| 48 | - String ACCEPT = "Accept"; | ||
| 49 | 44 | } | |
| Back | FazBrowse Home | New Git URL |
0 commit comments