2016-11-22 99 views
0

關注these關於實現客戶端憑證流程的指示,使用this樣本庫進行測試,我使用可讀取電子郵件,日曆和聯繫人的客戶端憑證流獲取應用程序的運行版本。沒有管理員登錄的客戶端證書流程

不過,我需要我每次運行它時登錄我O365佔有者管理員,並授予該應用訪問閱讀電子郵件,日曆等

是不是客戶機憑證流的整點(應用程序 - 只有)我不需要輸入任何憑據來讀取數據,因爲我已經創建了一個連接我的AAD-app和我的web-app的證書。

我唯一能想到的就是我只需要用管理員登錄一次就可以正確設置它,但是當我每次運行應用程序時都會提示以管理員身份登錄提示無效。在本地主機上運行)。

回答

0

您必須運行管理員同意一次,然後應該爲您的應用程序提供所需的訪問權限,只需使用其客戶端ID和密碼。現在,這隻對應用程序權限顯然很重要,如果您使用的是委派權限,則這些權限始終需要登錄用戶。

爲了讓管理員同意後,你需要點擊一個URL像這樣在Azure的AD:

https://login.microsoftonline.com/common/oauth2/authorize?client_id=your-client-id&redirect_uri=https%3A%2F%2Fwww.company.com%2Fazure-redirect%2F&response_type=code&prompt=admin_consent

與您的應用程序的客戶端ID替換您的客戶端-ID,並與回覆重定向的URI爲您的應用註冊的URL(當然是URL編碼)。它應該會提示你,例如「你想給應用AppName提供下列權限嗎?組織中沒有其他人會被問到。」您也可以用您的租戶ID或域名替換常見問題。

您可以使用Azure AD Graph Explorer來檢查是否成功通過了同意。檢查servicePrincipals,找到您的應用程序,然後檢查oauth2PermissionGrants並找到包含您的服務主體ID的對象。這將告訴你什麼權限已被授予和什麼資源(圖形API等)

+0

我如何確保訪問該應用程序的人實際上在組織中?或者我想我不知道,那是重點?只是感覺很不安全^^ –

+0

如果您的應用程序是單租戶,則只有來自該Azure AD的用戶才能登錄。但現在,您已賦予應用程序權限,可以在沒有用戶身份的情況下執行操作。然後,如果您的應用程序的某些部分使用這些僅限應用程序的權限,則必須確保授權設置正確。 – juunas