"use strict"; var CloudExperienceHost; (function (CloudExperienceHost) { (function (CloudDomain) { function _getStorage() { var localSettings = Windows.Storage.ApplicationData.current.localSettings; var shareContainerKey = "SHARE_CONTAINER"; var shareContainer; if (localSettings.containers.hasKey(shareContainerKey)) { shareContainer = localSettings.containers.lookup(shareContainerKey); } else { shareContainer = localSettings.createContainer(shareContainerKey, Windows.Storage.ApplicationDataCreateDisposition.always); } return shareContainer; } function _getCloudDomainWorker() { if (!CloudDomain.hasOwnProperty("cloudDomainJoinWorker")) { CloudDomain.cloudDomainJoinWorker = new CloudDomainJoin.DataModel.CloudDomainJoinWorker(); } return CloudDomain.cloudDomainJoinWorker; } function isAlreadyAzureADJoined() { var cloudDomainJoinWorker = _getCloudDomainWorker(); return cloudDomainJoinWorker.isAlreadyAzureADJoinedAsync(); } CloudDomain.isAlreadyAzureADJoined = isAlreadyAzureADJoined; function configureCredentialGuarantee(credentialPromptTitle, credentialPromptCaption) { var cloudDomainJoinWorker = _getCloudDomainWorker(); return cloudDomainJoinWorker.configureCredentialGuarantee(credentialPromptTitle, credentialPromptCaption); } CloudDomain.configureCredentialGuarantee = configureCredentialGuarantee; function doJoin(idToken, brokerRefreshToken, upn, mdmDiscoveryUrl, mdmResource, termsOfUseArtifact, tenantId, authorityUrl, accessLevel) { var storage = _getStorage(); var cloudDomainJoinWorker = _getCloudDomainWorker(); return cloudDomainJoinWorker.doCloudDomainJoinAsync(idToken, brokerRefreshToken, upn, mdmDiscoveryUrl, mdmResource, termsOfUseArtifact, accessLevel, tenantId, authorityUrl, storage.values); } CloudDomain.doJoin = doJoin; function decodeJsonWebTokenPart(jwtPart) { var base64String = jwtPart.replace(/-/g, "+").replace(/_/g, "/"); var utf8String = window.atob(base64String); var originalString = decodeURIComponent(escape(utf8String)); return originalString; } function crackIdToken(idToken) { var parts = idToken.split("."); if (parts.length == 3) { var encodedPayload = parts[1]; var jsonObjectValue = decodeJsonWebTokenPart(encodedPayload); return JSON.parse(jsonObjectValue); } else { throw new CloudExperienceHost.InvalidArgumentError(); } } function promoteIdTokenProperties(propertySet) { var idTokenProperties = { mandatoryTokenProperties: { upn: { internalName: "tokenUpn", tokenName: "upn", }, sid: { internalName: "tokenSid", tokenName: "sid", }, tid: { internalName: "tokenTenantId", tokenName: "tid", }, displayName: { internalName: "tokenTenantDisplayName", tokenName: "tenant_display_name", }, }, optionalTokenProperties: { mdmEnrollmentUrl: { internalName: "tokenMdmEnrollmentUrl", tokenName: "mdm_enrollment_url", }, mdmTermsOfUse: { internalName: "tokenMdmTermsOfUseUrl", tokenName: "mdm_terms_of_use_url", }, mdmComplianceUrl: { internalName: "tokenMdmComplianceUrl", tokenName: "mdm_compliance_url", }, settingSyncUrl: { internalName: "tokenUserSettingSyncUrl", tokenName: "user_setting_sync_url", }, }, }; var crackedIdToken = crackIdToken(propertySet["idToken"]); var mandatoryProperties = idTokenProperties.mandatoryTokenProperties; for (var property in mandatoryProperties) { propertySet[mandatoryProperties[property].internalName] = crackedIdToken[mandatoryProperties[property].tokenName]; } var optionalProperties = idTokenProperties.optionalTokenProperties; for (var property in optionalProperties) { if (crackedIdToken.hasOwnProperty(optionalProperties[property].tokenName)) { propertySet[optionalProperties[property].internalName] = crackedIdToken[optionalProperties[property].tokenName]; } } } function doAzureADJoin(idToken, brokerRefreshToken, upn, mdmDiscoveryUrl, mdmResource, termsOfUseArtifact, tenantId, authorityUrl, accessLevel) { var cloudDomainJoinWorker = _getCloudDomainWorker(); var credPromptTitle = WinJS.Resources.getString('/cloudDomainJoin/CredPromptTitle').value; var credPromptCaption = WinJS.Resources.getString('/cloudDomainJoin/CredPromptCaption').value; cloudDomainJoinWorker.configureCredentialGuarantee(credPromptTitle, credPromptCaption); var propertySet = CloudExperienceHost.Storage.PrivateData.getValues(); promoteIdTokenProperties(propertySet); return cloudDomainJoinWorker.doAzureADJoinAsync(idToken, brokerRefreshToken, upn, mdmDiscoveryUrl, mdmResource, termsOfUseArtifact, accessLevel, tenantId, authorityUrl, propertySet); } CloudDomain.doAzureADJoin = doAzureADJoin; function getAuthorizationEndpoint(discoveryUrl) { var correlationId = getClientRequestId(); return WinJS.xhr({ url: discoveryUrl, headers: { "client-request-id": correlationId, "cxh-correlationId": correlationId } }).then(function (response) { return JSON.parse(response.responseText)["authorization_endpoint"]; }, function (e) { CloudExperienceHost.Telemetry.WebAppTelemetry.getInstance().logEvent("CDJUIDiscoveryFailure", JSON.stringify({objectType: e && e.toString(), status: e.status && e.status.toString()})); return Promise.reject(e); }); } CloudDomain.getAuthorizationEndpoint = getAuthorizationEndpoint; function isCancellationAllowed() { var allowed = true; if (CloudExperienceHost.getContext().host.toLowerCase() === "frx") { var allowedProviders = CloudExperienceHostAPI.SignInIdentities.allowedProviders; var signInProvidersflag = CloudExperienceHostAPI.SignInIdentityProviders; if (0 === (allowedProviders & signInProvidersflag.msa)) { allowed = false; } } return allowed; } CloudDomain.isCancellationAllowed = isCancellationAllowed; function getClientRequestId() { return CloudExperienceHost.Telemetry.WebAppTelemetry.getInstance().getId(); } CloudDomain.getClientRequestId = getClientRequestId; function getDrsResourceUrn() { return (CloudExperienceHost.Environment.getTarget() === CloudExperienceHost.TargetEnvironment.INT) ? "urn:ms-drs:enterpriseregistration-ppe.windows.net" : "urn:ms-drs:enterpriseregistration.windows.net"; } CloudDomain.getDrsResourceUrn = getDrsResourceUrn; })(CloudExperienceHost.CloudDomain || (CloudExperienceHost.CloudDomain = {})); var CloudDomain = CloudExperienceHost.CloudDomain; })(CloudExperienceHost || (CloudExperienceHost = {}));