def _get_app_and_auth_code(
        client_id,
        client_secret=None,
        authority="https://login.microsoftonline.com/common",
        port=44331,
        scopes=["https://graph.microsoft.com/.default"],  # Microsoft Graph
        **kwargs):
    from msal.oauth2cli.authcode import obtain_auth_code
    app = msal.ClientApplication(client_id, client_secret, authority=authority)
    redirect_uri = "http://localhost:%d" % port
    ac = obtain_auth_code(port,
                          auth_uri=app.get_authorization_request_url(
                              scopes, redirect_uri=redirect_uri, **kwargs))
    assert ac is not None
    return (app, ac, redirect_uri)
Beispiel #2
0
 def test_auth_code(self):
     port = CONFIG.get("listen_port", 44331)
     redirect_uri = "http://localhost:%s" % port
     auth_request_uri = self.client.build_auth_request_uri(
         "code", redirect_uri=redirect_uri, scope=CONFIG.get("scope"))
     ac = obtain_auth_code(port, auth_uri=auth_request_uri)
     self.assertNotEqual(ac, None)
     result = self.client.obtain_token_by_authorization_code(
         ac,
         data={
             "scope": CONFIG.get("scope"),
             "resource": CONFIG.get("resource"),
         },  # MSFT AAD only
         redirect_uri=redirect_uri)
     self.assertLoosely(result,
                        lambda: self.assertIn('access_token', result))
Beispiel #3
0
    def test_auth_code(self):
        from msal.oauth2cli.authcode import obtain_auth_code
        port = CONFIG.get("listen_port", 44331)
        redirect_uri = "http://localhost:%s" % port
        auth_request_uri = self.app.get_authorization_request_url(
            CONFIG["scope"], redirect_uri=redirect_uri)
        ac = obtain_auth_code(port, auth_uri=auth_request_uri)
        self.assertNotEqual(ac, None)

        result = self.app.acquire_token_by_authorization_code(
            ac, CONFIG["scope"], redirect_uri=redirect_uri)
        logging.debug("cache = %s", json.dumps(self.app.token_cache._cache, indent=4))
        self.assertIn(
            "access_token", result,
            "{error}: {error_description}".format(
                # Note: No interpolation here, cause error won't always present
                error=result.get("error"),
                error_description=result.get("error_description")))
        self.assertCacheWorks(result)