

MSAL for pythonを使っています。  
AADB2Cでテナントを作成し、ユーザーとしてhogeを追加、アプリの登録を済ませてあります。

[code]

    app = msal.ConfidentialClientApplication(client_id=CLIENT_ID, authority=AUTHORITY, client_credential=CLIENT_SECRET, token_cache=cache)
    
[/code]

と定義して、

[code]

    app1.get_authorization_request_url([], state=None, redirect_uri=REDIRECT_PATH)
    
[/code]

で得られたURLからログイン画面に遷移、そこからhogeさんにログインしてもらってアプリに帰ってきます。  
URLのqueryからcodeを受け取り、そのcodeでトークンを得、キャッシュをシリアライズしました。

[code]

    token = app.acquire_token_by_authorization_code(code=code['code'], scopes=SCOPE, redirect_uri=REDIRECT_PATH)
    cache = cache.serialize()
    
[/code]

ここから質問なのですが…

  * 以下のようにacquire_token_silentを使用したのですが、何も返ってきませんがこれは正常な動作でしょうか？

[code]

    result = app1.acquire_token_silent(scopes=SCOPE, account=None)
    print(result)
      None
    
[/code]

  * その後さらに、cacheをデシリアライズしたものを使用してConfidentialClientApplicationをインスタンス化し、get_accounts()を使用しましたが、home_account_idやlocal_account_idなどはuser:taroの情報が正しく表示されますが、usernameのみ空が返ってきてしまいます。何が原因で、どうすればtaroのusernameが返ってくるのでしょうか？

[code]

    cca = msal.ConfidentialClientApplication(client_id=CLIENT_ID, authority=AUTHORITY, client_credential=CLIENT_SECRET, token_cache=acache)
    accounts = cca.get_accounts()
    print(accounts[0])
    
    {
      "home_account_id": "xxxx-xxxx-xxxx（hogeさんとして登録されてるい値）", 
      "environment": "xxxxxx.b2clogin.com",
      "username": "",
      "authority_type": "MSSTS",
      "local_account_id": "xxxx-xxxx-xxxx（hogeさんとして登録されている値）",
      "realm": "xxxxxx.onmicrosoft.com"
    }
    
[/code]

よろしくお願いいたします。


CC BY-SA 4.0
2023-03-22T07:29:24.633
94271
2023-03-22T07:29:24.633
57631
question
python azure
MSAL for pythonのget_accounts()メソッドでusernameだけが空になって返ってくる