2014-10-01 966 views
0

Continuation of this question I had asked。我正在嘗試在我的PHP Web應用程序上實現「使用您的O365帳戶登錄」功能。請求訪問資源時出現錯誤AADSTS50020 https://graph.windows.net/

當我的應用程序請求訪問Graph API資源(https://graph.windows.net/)時,似乎只有管理員可以允許訪問。如果一個非管理員試圖完成OAuth的認證流程,他們從login.windows.net得到這個錯誤:

AADSTS50020: This operation can only be performed by an administrator. Sign out and sign in as an administrator or contact one of your organization's administrators. 

我真的不希望得到進入詳細信息有關目錄中的所有用戶(我可以理解像這樣需要管理員權限的東西),但只是當前登錄用戶的名稱/電子郵件(管理員或非管理員)。

因此,我基本上需要任何O365用戶能夠讓他們的基本配置文件信息被我的應用程序讀取。 Graph API是否正確?爲了達到這個目的,我需要做什麼不同的事情?

回答

0

如果您向您的OAuth令牌請求添加'scope = openid',則來自AAD的響應應該包含'id_token'鍵。該鍵的值是一個無符號JWT令牌在其中,你會發現有關用戶的以下屬性,如果他們在目錄中可用:

  • OID =目錄的ObjectId。
  • tid =用戶是其成員的租戶ID GUID。
  • ISS =發行人
  • UPN
  • 電子郵件
  • 受試者
  • GIVEN_NAME
  • FAMILY_NAME

注:的id_token與鹼性OAuth憑證響應一起返回是一個無符號令牌。它不應與OpenID Connect協議響應中返回的簽名id_token混淆。它應該絕對不是被用於做出認證決定。這完全是信息化的。

相關問題