このURLで(ブラウザ経由で)アクセスできるファイルをダウンロードしようとしています:
https://test.sharepoint.com/sites/team/team documents / subfolder / document.docx
次のコードでClientRequestオブジェクトを使用しています。
url = "https://test.sharepoint.com/sites/team"
username="[email protected]"
password="pass"
ctxAuth = AuthenticationContext(url)
if ctxAuth.acquire_token_for_user(username, password):
print 'authentication successful, proceeding...'
request = ClientRequest(ctxAuth)
requestUrl="{0}/_api/web/getfilebyserverrelativeurl('team documents/subfolder/document.docx')"
options=RequestOptions(requestUrl.format(url))
data = request.execute_query_direct(options)
これを実行すると、次のトレースが得られます。
$ python test.py
No handlers could be found for logger "client.office365.runtime.auth.saml_token_provider.SamlTokenProvider.process_service_token_response"
authentication successful, proceeding...
Traceback (most recent call last):
File "test.py", line 14, in <module>
data = request.execute_query_direct(options)
File "/usr/lib/python2.7/site-packages/client/office365/runtime/client_request.py", line 77, in execute_query_direct
self.context.authenticate_request(request_options)
File "/usr/lib/python2.7/site-packages/client/office365/runtime/auth/authentication_context.py", line 20, in authenticate_request
request_options.set_header('Cookie', self.provider.get_authentication_cookie())
File "/usr/lib/python2.7/site-packages/client/office365/runtime/auth/saml_token_provider.py", line 65, in get_authentication_cookie
return 'FedAuth=' + self.FedAuth + '; rtFa=' + self.rtFa
TypeError: cannot concatenate 'str' and 'NoneType' objects
モジュールの使い方に問題はありますか?
SharePointインスタンスがプロキシの背後で実行されているため、同様の問題が発生しました。 ログインURL( self.sts
)とCookie名を上書きするには、 SamlTokenProvider
をサブクラス化する必要がありました。 問題は、初期化中にコードがacquire_authentication_cookie
の結果をチェックしないため、認証が失敗した場合、Cookieが使用されるまでそのことを知らないということだと思います。
私は同じ問題に遭遇しました。 認証の失敗は例外によって処理されないようです。 クッキーが照会された場合にのみ泡立ちます。 クレデンシャルを確認してください
同じ問題。 クレデンシャルを確認しましたが、問題は解決しません。 他の考えはありますか? ありがとう!
最終的に OAuth2Sessionを使用して oauth2 認証を取得し、グラフ API からデータを取得しました。 しばらく経ちましたが、正確な詳細はもう覚えていません。
おかげでそれをチェックします。
こんにちは、私は同じ問題を抱えていますが、私の場合は、FormAuthenticationメソッドでSharePointを構成しているためだと思います。 適切なトークンプロバイダーが実装されるまで、それは機能しません
私もこの問題にぶつかっていますが、outlook.comアカウントを使用している場合に限ります。 誰かが舞台裏で何が起こっているのかを説明し、おそらく解決策を提供してくれることを願っています。 ここに簡単な説明があります:
1) 私たちの SharePoint サイトはクラウドにあります (https://mn365.sharepoint.com)
2) ミネソタ州の資格情報を使用してサイトに接続すると、正常に接続されます。
3)しかし、自分の資格情報をアプリケーションに埋め込みたくないので、「 [email protected] 」に沿って「サービスアカウント」を作成しました。 このアカウントは失敗します。
outlook.comアドレスを使用する場合と、組織が発行するアドレス(この場合はfirstName。[email protected])を使用する場合の認証の違いは何ですか?
ここでも同じ問題があります。 認証にADFSを使用しています。 今まで、SharePointオンラインサーバーから情報を取得する方法は見つかりませんでした。 私はたくさんのライブラリを試しましたが、何もうまくいきませんでした。
共有ポイントが認証のためにオンプレミスの STS/ADFS にリダイレクトしていたため、同じエラーが発生しました。
オンプレミスのSTS / ADFSへのリダイレクトを使用しないように、O365で直接新しいO365ユーザーを作成しました。 これでエラーが解決しました👍
私は、ootbを実行し、私の状態をカバーするsharepyに切り替えました
こっちも一緒:
ロガー「office365.runtime.auth.saml_token_provider.SamlTokenProvider._process_service_token_response」のハンドラーが見つかりませんでした
他の人からの幸運はありますか?
たぶん、以下はそれをさらに絞り込むのに役立ちます。
一般的なSharePointURLで正常に認証できますが、特定のチームチャネルを指しているURLでは認証できません。 次のコードは正常に機能します。
url = "https://COMPANYNAME.sharepoint.com/"
username=raw_input("username: ")
password=raw_input("password: ")
ctx_auth = AuthenticationContext(url=url)
if ctx_auth.acquire_token_for_user(username=username, password=password):
しかし、URLを次のように置き換えると:
url = "https://COMPANYNAME.sharepoint.com/sites/TEAMSCHANNEL/"
その後、次のエラーが表示されます::
No handlers could be found for logger "office365.runtime.auth.saml_token_provider.SamlTokenProvider.acquire_authentication_cookie"
回避策はありがたいですが、私のブラウザでは、両方とも問題なく表示されます。
上記のユースケースの回避策が見つかりました。 AuthenticationContext
を取得するためにベースURLを使用するだけです。 新しいClientContext
オブジェクトは、さまざまなURLを使用して作成できます。
base_url = "https://COMPANYNAME.sharepoint.com/"
ctx_auth = AuthenticationContext(url=base_url)
if not ctx_auth.acquire_token_for_user(username=user, password=password):
sys.exit('Error in getting token - quitting')
url = base_url + "sites/TEAMSCHANNEL/"
ctx = ClientContext(url, ctx_auth)
..
..
やあみんな!
この問題が報告された瞬間から現在まで、_SharePoint Onlineを使用したSAMLベースのフェデレーション認証のサポート_に関して、次の改善/バグ修正が行われました。
したがって、提供されたエラーは発生しなくなります。必ず_latest_バージョン( 2.1.10.1
以上)を取得してください。
最も参考になるコメント
SharePointインスタンスがプロキシの背後で実行されているため、同様の問題が発生しました。 ログインURL(
self.sts
)とCookie名を上書きするには、SamlTokenProvider
をサブクラス化する必要がありました。 問題は、初期化中にコードがacquire_authentication_cookie
の結果をチェックしないため、認証が失敗した場合、Cookieが使用されるまでそのことを知らないということだと思います。