2016-12-22 37 views
0

我在Microsoft Azure中有應用程序。我需要使用他們已經存在的Microsoft帳戶來實現用戶登錄。我對谷歌賬戶也一樣。在谷歌登錄;提示登錄並獲取用戶電子郵件,然後我檢查我的數據庫中的電子郵件。但我仍然無法實現與微軟賬戶相同的情況。我嘗試過使用Microsoft Azure OpenId。它表示用戶沒有被分配到該項目。我需要這樣做,而不需要將用戶分配給我的客戶。使用身份提供商登錄Microsoft帳戶

https://docs.microsoft.com/en-us/azure/active-directory/active-directory-protocols-openid-connect-code

只要我想允許用戶登錄,並採取他們的用戶信息。

我也跟着這個tutorial也。它給了以下錯誤。

enter image description here

+0

您是否在應用中授予了返回網址? –

+0

是的,我添加了重定向網址。其實我需要身份提供者身份驗證。我需要一些用戶信息 –

+0

當您實施Google/Microsoft帳戶登錄時,是否使用OWIN並在Startup.Auth.cs文件中編寫了一些代碼? –

回答

1

據我瞭解,你面臨兩個問題:1)沒有得到回覆電子郵件時使用OpenID登錄時使用他們的Microsoft帳戶2)無效的請求錯誤的用戶連接的跡象。使用Microsoft帳戶登錄

在我們的應用

問題,我們也要求用戶在使用他們的微軟帳戶登錄。爲了取回電子郵件地址,您實際上必須以用戶同意的形式提出要求。這是通過在您的請求中指定適當的Scopes來完成的。您需要提供wl.emails範圍。以下是我們在應用程序中(在Startup.Auth.cs文件中)配置Microsoft帳戶身份驗證的方式。

 var microsoftAuthOptions = new MicrosoftAccountAuthenticationOptions() 
     { 
      Caption = "Microsoft Account", 
      ClientId = <your client id>, 
      ClientSecret = <your client secret>, 
     }; 
     microsoftAuthOptions.Scope.Add("wl.emails,wl.signin");//Email scope also returns the user name, so that should be fine. We don't need wl.basic. 
     app.UseMicrosoftAccountAuthentication(microsoftAuthOptions); 

現在,當登錄過程完成後,您會看到用戶的電子郵件地址爲其中一項索賠。

問題與Azure的AD

這裏發生的事情是你將用戶重定向到一個common端點(https://login.microsoftonline.com/common/<rest of the stuff>)進行身份驗證,然後要求用戶授予權限,以在common租戶應用程序。由於用戶沒有權限執行此操作,因此出現此錯誤。

當您需要做的是要求用戶提供Azure AD的URL(例如something.onmicrosoft.com)並將用戶重定向到用於身份驗證和授權的用戶(https://login.microsoftonline.com/something.onmicrosoft.com/<rest of the stuff>)。因爲現在用戶正在針對特定的Azure AD進行身份驗證,所以如果AD Admin授予他們適當的權限,他們不應該得到此錯誤。請注意,使用哪個用戶登錄的Microsoft帳戶必須存在於Azure AD中,並且AD Admin允許用戶向第三方應用授予權限,否則您仍會收到此錯誤。

+0

我對owin做了同樣的事情。我需要將它添加到自定義視圖中的自定義按鈕,MVC中的控制器。我嘗試了你提到的URL,它仍然表示未經授權,因爲我沒有將用戶添加到活動目錄。有沒有添加用戶權限的方法? –

+0

'是否有任何方法在不添加用戶的情況下授予權限?'否。用戶**必須**存在於Azure AD中。 –

+0

我可以用歐文做這個嗎?爲什麼我們無法像Google身份提供商那樣做這件事?我們沒有分配任何用戶。它會提示任何用戶使用Google帳戶登錄。您幫助我找到正確的方向 –

相關問題