|
22 | 22 | // THE SOFTWARE. |
23 | 23 | package com.microsoft.identity.client; |
24 | 24 |
|
| 25 | +import static com.microsoft.identity.client.PublicClientApplicationConfiguration.SerializedNames.ACCOUNT_MODE; |
| 26 | +import static com.microsoft.identity.client.PublicClientApplicationConfiguration.SerializedNames.AUTHORITIES; |
| 27 | +import static com.microsoft.identity.client.PublicClientApplicationConfiguration.SerializedNames.AUTHORIZATION_IN_CURRENT_TASK; |
| 28 | +import static com.microsoft.identity.client.PublicClientApplicationConfiguration.SerializedNames.AUTHORIZATION_USER_AGENT; |
| 29 | +import static com.microsoft.identity.client.PublicClientApplicationConfiguration.SerializedNames.BROWSER_SAFE_LIST; |
| 30 | +import static com.microsoft.identity.client.PublicClientApplicationConfiguration.SerializedNames.CLIENT_CAPABILITIES; |
| 31 | +import static com.microsoft.identity.client.PublicClientApplicationConfiguration.SerializedNames.CLIENT_ID; |
| 32 | +import static com.microsoft.identity.client.PublicClientApplicationConfiguration.SerializedNames.ENVIRONMENT; |
| 33 | +import static com.microsoft.identity.client.PublicClientApplicationConfiguration.SerializedNames.HANDLE_TASKS_WITH_NULL_TASKAFFINITY; |
| 34 | +import static com.microsoft.identity.client.PublicClientApplicationConfiguration.SerializedNames.HTTP; |
| 35 | +import static com.microsoft.identity.client.PublicClientApplicationConfiguration.SerializedNames.LOGGING; |
| 36 | +import static com.microsoft.identity.client.PublicClientApplicationConfiguration.SerializedNames.MULTIPLE_CLOUDS_SUPPORTED; |
| 37 | +import static com.microsoft.identity.client.PublicClientApplicationConfiguration.SerializedNames.POWER_OPT_CHECK_FOR_NETWORK_REQUEST_ENABLED; |
| 38 | +import static com.microsoft.identity.client.PublicClientApplicationConfiguration.SerializedNames.PREFERRED_BROWSER; |
| 39 | +import static com.microsoft.identity.client.PublicClientApplicationConfiguration.SerializedNames.REDIRECT_URI; |
| 40 | +import static com.microsoft.identity.client.PublicClientApplicationConfiguration.SerializedNames.REQUIRED_BROKER_PROTOCOL_VERSION; |
| 41 | +import static com.microsoft.identity.client.PublicClientApplicationConfiguration.SerializedNames.TELEMETRY; |
| 42 | +import static com.microsoft.identity.client.PublicClientApplicationConfiguration.SerializedNames.USE_BROKER; |
| 43 | +import static com.microsoft.identity.client.PublicClientApplicationConfiguration.SerializedNames.WEBAUTHN_CAPABLE; |
| 44 | +import static com.microsoft.identity.client.PublicClientApplicationConfiguration.SerializedNames.WEB_VIEW_ZOOM_CONTROLS_ENABLED; |
| 45 | +import static com.microsoft.identity.client.PublicClientApplicationConfiguration.SerializedNames.WEB_VIEW_ZOOM_ENABLED; |
| 46 | +import static com.microsoft.identity.client.exception.MsalClientException.APP_MANIFEST_VALIDATION_ERROR; |
| 47 | + |
25 | 48 | import android.Manifest; |
26 | 49 | import android.content.Context; |
27 | 50 | import android.content.Intent; |
|
44 | 67 | import com.microsoft.identity.client.exception.MsalClientException; |
45 | 68 | import com.microsoft.identity.common.adal.internal.AuthenticationConstants; |
46 | 69 | import com.microsoft.identity.common.adal.internal.AuthenticationSettings; |
| 70 | +import com.microsoft.identity.common.internal.authorities.UnknownAudience; |
| 71 | +import com.microsoft.identity.common.internal.broker.PackageHelper; |
| 72 | +import com.microsoft.identity.common.internal.logging.Logger; |
| 73 | +import com.microsoft.identity.common.internal.telemetry.TelemetryConfiguration; |
47 | 74 | import com.microsoft.identity.common.java.authorities.Authority; |
48 | 75 | import com.microsoft.identity.common.java.authorities.AzureActiveDirectoryAuthority; |
49 | 76 | import com.microsoft.identity.common.java.authorities.Environment; |
50 | | -import com.microsoft.identity.common.internal.authorities.UnknownAudience; |
51 | 77 | import com.microsoft.identity.common.java.authorities.UnknownAuthority; |
52 | | -import com.microsoft.identity.common.internal.broker.PackageHelper; |
53 | 78 | import com.microsoft.identity.common.java.configuration.LibraryConfiguration; |
54 | | -import com.microsoft.identity.common.internal.logging.Logger; |
55 | 79 | import com.microsoft.identity.common.java.providers.oauth2.OAuth2TokenCache; |
56 | | -import com.microsoft.identity.common.internal.telemetry.TelemetryConfiguration; |
57 | 80 | import com.microsoft.identity.common.java.ui.AuthorizationAgent; |
58 | 81 | import com.microsoft.identity.common.java.ui.BrowserDescriptor; |
59 | 82 |
|
|
63 | 86 |
|
64 | 87 | import javax.crypto.SecretKey; |
65 | 88 |
|
66 | | -import static com.microsoft.identity.client.PublicClientApplicationConfiguration.SerializedNames.ACCOUNT_MODE; |
67 | | -import static com.microsoft.identity.client.PublicClientApplicationConfiguration.SerializedNames.AUTHORITIES; |
68 | | -import static com.microsoft.identity.client.PublicClientApplicationConfiguration.SerializedNames.AUTHORIZATION_IN_CURRENT_TASK; |
69 | | -import static com.microsoft.identity.client.PublicClientApplicationConfiguration.SerializedNames.AUTHORIZATION_USER_AGENT; |
70 | | -import static com.microsoft.identity.client.PublicClientApplicationConfiguration.SerializedNames.BROWSER_SAFE_LIST; |
71 | | -import static com.microsoft.identity.client.PublicClientApplicationConfiguration.SerializedNames.CLIENT_CAPABILITIES; |
72 | | -import static com.microsoft.identity.client.PublicClientApplicationConfiguration.SerializedNames.CLIENT_ID; |
73 | | -import static com.microsoft.identity.client.PublicClientApplicationConfiguration.SerializedNames.ENVIRONMENT; |
74 | | -import static com.microsoft.identity.client.PublicClientApplicationConfiguration.SerializedNames.HANDLE_TASKS_WITH_NULL_TASKAFFINITY; |
75 | | -import static com.microsoft.identity.client.PublicClientApplicationConfiguration.SerializedNames.HTTP; |
76 | | -import static com.microsoft.identity.client.PublicClientApplicationConfiguration.SerializedNames.LOGGING; |
77 | | -import static com.microsoft.identity.client.PublicClientApplicationConfiguration.SerializedNames.MULTIPLE_CLOUDS_SUPPORTED; |
78 | | -import static com.microsoft.identity.client.PublicClientApplicationConfiguration.SerializedNames.POWER_OPT_CHECK_FOR_NETWORK_REQUEST_ENABLED; |
79 | | -import static com.microsoft.identity.client.PublicClientApplicationConfiguration.SerializedNames.PREFERRED_BROWSER; |
80 | | -import static com.microsoft.identity.client.PublicClientApplicationConfiguration.SerializedNames.REDIRECT_URI; |
81 | | -import static com.microsoft.identity.client.PublicClientApplicationConfiguration.SerializedNames.REQUIRED_BROKER_PROTOCOL_VERSION; |
82 | | -import static com.microsoft.identity.client.PublicClientApplicationConfiguration.SerializedNames.TELEMETRY; |
83 | | -import static com.microsoft.identity.client.PublicClientApplicationConfiguration.SerializedNames.USE_BROKER; |
84 | | -import static com.microsoft.identity.client.PublicClientApplicationConfiguration.SerializedNames.WEBAUTHN_CAPABLE; |
85 | | -import static com.microsoft.identity.client.PublicClientApplicationConfiguration.SerializedNames.WEB_VIEW_ZOOM_CONTROLS_ENABLED; |
86 | | -import static com.microsoft.identity.client.PublicClientApplicationConfiguration.SerializedNames.WEB_VIEW_ZOOM_ENABLED; |
87 | | -import static com.microsoft.identity.client.exception.MsalClientException.APP_MANIFEST_VALIDATION_ERROR; |
88 | | - |
89 | 89 | public class PublicClientApplicationConfiguration { |
90 | 90 | private static final String TAG = PublicClientApplicationConfiguration.class.getSimpleName(); |
91 | 91 |
|
@@ -755,15 +755,23 @@ private boolean isValidAuthenticatorRedirectUri() { |
755 | 755 | final PackageInfo info = mAppContext.getPackageManager().getPackageInfo(AuthenticationConstants.Broker.AZURE_AUTHENTICATOR_APP_PACKAGE_NAME, PackageManager.GET_SIGNATURES); |
756 | 756 | if (info != null && info.signatures != null && info.signatures.length > 0) { |
757 | 757 | final Signature signature = info.signatures[0]; |
758 | | - MessageDigest md = MessageDigest.getInstance("SHA"); |
759 | | - md.update(signature.toByteArray()); |
760 | | - final String signatureHash = Base64.encodeToString(md.digest(), Base64.NO_WRAP); |
761 | | - if (AuthenticationConstants.Broker.AZURE_AUTHENTICATOR_APP_RELEASE_SIGNATURE.equalsIgnoreCase(signatureHash) |
762 | | - || AuthenticationConstants.Broker.AZURE_AUTHENTICATOR_APP_DEBUG_SIGNATURE.equalsIgnoreCase(signatureHash)) { |
| 758 | + |
| 759 | + final MessageDigest md_sha512 = MessageDigest.getInstance("SHA-512"); |
| 760 | + md_sha512.update(signature.toByteArray()); |
| 761 | + final String sha512_signingCertThumbprint = Base64.encodeToString(md_sha512.digest(), Base64.NO_WRAP); |
| 762 | + |
| 763 | + if (AuthenticationConstants.Broker.AZURE_AUTHENTICATOR_APP_RELEASE_SIGNATURE_SHA512.equalsIgnoreCase(sha512_signingCertThumbprint) |
| 764 | + || AuthenticationConstants.Broker.AZURE_AUTHENTICATOR_APP_DEBUG_SIGNATURE_SHA512.equalsIgnoreCase(sha512_signingCertThumbprint)) { |
| 765 | + |
| 766 | + // MSAL still uses SHA-1 format in redirect url. |
| 767 | + final MessageDigest md_sha1 = MessageDigest.getInstance("SHA"); |
| 768 | + md_sha1.update(signature.toByteArray()); |
| 769 | + final String sha1_signingCertThumbprint = Base64.encodeToString(md_sha1.digest(), Base64.NO_WRAP); |
| 770 | + |
763 | 771 | final Uri.Builder builder = new Uri.Builder(); |
764 | 772 | final Uri uri = builder.scheme("msauth") |
765 | 773 | .authority(mAppContext.getPackageName()) |
766 | | - .appendPath(signatureHash) |
| 774 | + .appendPath(sha1_signingCertThumbprint) |
767 | 775 | .build(); |
768 | 776 |
|
769 | 777 | if (mRedirectUri.equalsIgnoreCase(uri.toString()) || |
|
0 commit comments