Пример #1
0
 def acquire_token_for_app(self, client_id, client_secret):
     """Acquire token via client credentials (SharePoint App Principal)
     Status: deprecated!
     """
     self._provider = ACSTokenProvider(url=self.url,
                                       client_id=client_id,
                                       client_secret=client_secret)
     return self._provider.ensure_app_only_access_token()
 def acquire_token_for_app(self, client_id, client_secret):
     """Acquire token via client credentials (SharePoint App Principal)"""
     self.provider = ACSTokenProvider(self.url, client_id, client_secret)
     if not self.provider.acquire_token():
         raise ValueError('Acquire token failed: {0}'.format(
             self.provider.error))
     return True
 def register_provider(self, credentials_or_token_func, **kwargs):
     if callable(credentials_or_token_func):
         self._provider = OAuthTokenProvider(credentials_or_token_func)
     elif isinstance(credentials_or_token_func, ClientCredential):
         self._provider = ACSTokenProvider(self.url, credentials_or_token_func.clientId,
                                           credentials_or_token_func.clientSecret)
     elif isinstance(credentials_or_token_func, UserCredential):
         allow_ntlm = kwargs.get('allow_ntlm', False)
         if allow_ntlm:
             from office365.runtime.auth.providers.ntlm_provider import NtlmProvider
             self._provider = NtlmProvider(credentials_or_token_func.userName,
                                           credentials_or_token_func.password)
         else:
             self._provider = SamlTokenProvider(self.url, credentials_or_token_func.userName,
                                                credentials_or_token_func.password)
     else:
         raise ValueError("Unknown credential type")
    def acquire_token_for_user(self, username, password):
        """Acquire token via user credentials
        Status: deprecated!

        :type password: str
        :type username: str
        """
        self._provider = SamlTokenProvider(url=self.url, username=username, password=password)
        return self._provider.ensure_authentication_cookie()
Пример #5
0
class AuthenticationContext(object):
    def __init__(self, url):
        """
        Authentication context for SharePoint Online/OneDrive

        :param str url:  authority url
        """
        self.url = url
        self._provider = None

    def with_client_certificate(self, tenant, client_id, thumbprint,
                                cert_path):
        """Creates authenticated SharePoint context via certificate credentials

        :param str tenant: Tenant name, for example {}@
        :param str cert_path: Path to A PEM encoded certificate private key.
        :param str thumbprint: Hex encoded thumbprint of the certificate.
        :param str client_id: The OAuth client id of the calling application.
        """
        def _acquire_token_for_client_certificate():
            authority_url = 'https://login.microsoftonline.com/{0}'.format(
                tenant)
            scopes = [f"{self.url}/.default"]
            credentials = {
                "thumbprint": thumbprint,
                "private_key": open(cert_path).read()
            }
            app = msal.ConfidentialClientApplication(
                client_id,
                authority=authority_url,
                client_credential=credentials,
            )
            result = app.acquire_token_for_client(scopes)
            return TokenResponse.from_json(result)

        self.register_provider(_acquire_token_for_client_certificate)
        return self

    def register_provider(self, credentials_or_token_func, **kwargs):
        if callable(credentials_or_token_func):
            self._provider = OAuthTokenProvider(credentials_or_token_func)
        elif isinstance(credentials_or_token_func, ClientCredential):
            self._provider = ACSTokenProvider(
                self.url, credentials_or_token_func.clientId,
                credentials_or_token_func.clientSecret)
        elif isinstance(credentials_or_token_func, UserCredential):
            allow_ntlm = kwargs.get('allow_ntlm', False)
            if allow_ntlm:
                from office365.runtime.auth.providers.ntlm_provider import NtlmProvider
                self._provider = NtlmProvider(
                    credentials_or_token_func.userName,
                    credentials_or_token_func.password)
            else:
                browser_mode = kwargs.get('browser_mode', False)
                self._provider = SamlTokenProvider(
                    self.url, credentials_or_token_func.userName,
                    credentials_or_token_func.password, browser_mode)
        else:
            raise ValueError("Unknown credential type")

    def acquire_token_for_user(self, username, password, browser_mode=False):
        """Acquire token via user credentials
        Status: deprecated!

        :type password: str
        :type username: str
        :type browser_mode: str
        """
        self._provider = SamlTokenProvider(url=self.url,
                                           username=username,
                                           password=password,
                                           browser_mode=browser_mode)
        return self._provider.ensure_authentication_cookie()

    def acquire_token_for_app(self, client_id, client_secret):
        """Acquire token via client credentials (SharePoint App Principal)
        Status: deprecated!
        """
        self._provider = ACSTokenProvider(url=self.url,
                                          client_id=client_id,
                                          client_secret=client_secret)
        return self._provider.ensure_app_only_access_token()

    def authenticate_request(self, request):
        """Authenticate request
        :type request: RequestOptions"""
        self._provider.authenticate_request(request)