據我瞭解,你面臨兩個問題: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允許用戶向第三方應用授予權限,否則您仍會收到此錯誤。
您是否在應用中授予了返回網址? –
是的,我添加了重定向網址。其實我需要身份提供者身份驗證。我需要一些用戶信息 –
當您實施Google/Microsoft帳戶登錄時,是否使用OWIN並在Startup.Auth.cs文件中編寫了一些代碼? –