2016-12-05 27 views
2

我們使用OAuth 2.0從Azure AD獲取JWT令牌。在我們的應用程序中,我們使用'upn'聲明的值來確定關聯的內部用戶名。JWT聲稱來自Azure AD令牌的東西可以安全地用於用戶映射嗎?

Azure AD Token Reference記錄了UPN權利要求作爲「用戶主體名稱」,這據我明白的是以下的地址規格的格式(即,用戶@域)用戶名。這對在Azure AD租戶內創建的用戶很有效。但令我驚訝的是,upn索賠似乎已經消失,如果認證的用戶從一個不同的AD同步。這種行爲似乎沒有記錄在任何地方。

  1. 我在哪裏可以找到當UPN是保證在令牌上的文件?
  2. 什麼是我可以使用的可靠替代索賠?最好聲明保證爲「用戶/域名」形式,因爲這與我們的模型最匹配。我已經考慮了以下幾點:
    • UNIQUE_NAME:我只看到這等於UPN,但我不知道它從何而來。令人困惑的是,token reference說:這個值是而不是保證在租戶內是唯一的,並被設計爲僅用於顯示目的。(重點煤礦)
    • 電子郵件:這似乎太等於UPN,但同樣,它在哪兒從來源?在管理門戶中,我曾嘗試在與用戶相關的每個電子郵件相關字段中放入不同的值,但似乎沒有一個值得傳播到此聲明中。因此它看起來這個字段是實際上不是電子郵件

我想絕對確保我們的應用程序將能夠處理由Azure的AD發佈的所有令牌,所以我很猶豫使用任何上述權利的,除非我有一些文件,說明其實際語義。

回答

1
  1. 我在哪裏可以找到upn保證在令牌中的文檔?

沒有關於如何保證索賠的文件。根據測試,正如您所提到的,只有在用戶不是外部用戶時纔會發佈。

什麼是我可以使用的可靠替代索賠?最好聲明保證爲「用戶/域名」形式,因爲這與我們的模型最匹配。我已考慮以下內容:

我們可以使用oid聲明來映射用戶。此索賠是包含Azure AD中對象的唯一標識符。這個值是不可變的,不能被重新分配或重用。使用對象ID來標識Azure AD查詢中的對象。

如果您對Azure文檔有任何反饋,可以嘗試提交反饋意見此頁面有幫助嗎?位於右下角頁面以幫助改進文檔。 enter image description here

+0

謝謝你的回答。我認爲沒有關於** unique_name **和** email **的語義的文檔,那麼?缺乏唯一性不一定是問題(多個AD主體仍然可以在我們的應用程序中識別相同的用戶)。 –

0

雖然用戶的UPN和主要電子郵件地址是相同的事情是相當普遍的,但不能保證(UPN的存在與您注意到的一樣)。所以你應該在假設UPN!=電子郵件地址的情況下運行。如果您需要知道電子郵件地址,則應該使用oid進行圖形調用和搜索。

相關問題