2015-10-21 86 views
1

注:我正在使用微軟最新adal的實驗性預發行版本ADAL無效的重定向uri

我試圖讓我的身份提供者在移動應用程序上工作。到目前爲止,我已經能夠加載我的身份提供商並設法讓登錄頁面顯示(除了facebook)。

問題是,每當我實際嘗試登錄我收到「無效的重定向uri」形式的一些錯誤。

谷歌,例如,會說:「在請求重定向URI:https://login.microsoftonline.com/ ...沒有匹配的註冊重定向URI

Facebook將顯示:」鑑於URL不是由應用程序配置允許的:應用程序的設置不允許使用一個或多個給定的URL。它必須與網站URL或Canvas URL匹配,或者該域名必須是其中一個應用域的子域名。「

據我瞭解,您實際上不需要再註冊移動應用程序與不同身份因爲Azure位於你和他們之間,Azure處理連接,獲取你的令牌並用它來識別你,然後它應該返回一組「藍色令牌」給你

據我所知使用的重定向URI因爲我能夠首先加載身份提供商嗎? 更不用說它似乎是許多應用程序使用的默認URL:urn:ietf:wg:oauth:2.0:oob只是告訴它將它返回給某些非瀏覽器基於應用程序?

這是我使用的代碼進行實際的登錄/註冊:

private static String AUTHORITY_URL = "https://login.microsoftonline.com/<directory>/oauth2/authorize/"; 
    private static String CLIENT_ID = "my_client_id"; 
    private static String[] SCOPES = { "my_client_id" }; 
    private static String[] ADDITIONAL_SCOPES = { "" }; 
private static String REDIRECT_URL = "urn:ietf:wg:oauth:2.0:oob"; 
    private static String CORRELATION_ID = ""; 
    private static String USER_HINT = ""; 
    private static String EXTRA_QP = "nux=1"; 
    private static String FB_POLICY = "B2C_1_<your policy>"; 
    private static String EMAIL_SIGNIN_POLICY = "B2C_1_SignIn"; 
    private static String EMAIL_SIGNUP_POLICY = "B2C_1_SignUp"; 

public async Task<AuthenticationResult> Login(IPlatformParameters parameters, bool isSignIn) 
    { 
     var authContext = new AuthenticationContext(AUTHORITY_URL, new TokenCache()); 

     if (CORRELATION_ID != null && 
       CORRELATION_ID.Trim().Length != 0) 
     { 
      authContext.CorrelationId = Guid.Parse(CORRELATION_ID); 
     } 

     String policy = ""; 
     if (isSignIn) 
      policy = EMAIL_SIGNIN_POLICY; 
     else 
      policy = EMAIL_SIGNUP_POLICY; 

     return await authContext.AcquireTokenAsync(SCOPES, ADDITIONAL_SCOPES, CLIENT_ID, new Uri(REDIRECT_URL), parameters, UserIdentifier.AnyUser, EXTRA_QP, policy);    

    } 

微軟的文檔是不是真的幫助,因爲大多數要麼是空的(他們硬是沒有打出來)或這是一年前的一些幫助話題。這個東西很新,所以文件看起來很難。

所以,親愛的人的stackoverflow,我錯過了什麼?它爲什麼說當它在azure web門戶上註冊時,重定向urI是無效的?如果重定向URI無效,爲什麼我可以首先檢索身份提供者?

回答

1

那爲什麼我似乎無法搜索了幾個小時之後找到解決辦法,但是當我在這裏發表一個問題,我找到某種分鐘內回答...

這真是一個愚蠢的錯誤在那,我的一個同事給我發送了錯誤的權威url。 有趣的是,它足夠「正確」地加載我們在門戶上安裝的身份提供商,但卻不足以處理實際登錄或登錄。

我最初使用:

https://login.microsoftonline.com/<tenant_id>/oauth2/authorize/ 

它應該是:

https://login.microsoftonline.com/<tenant_id>/oauth2/v2.0/authorize 

你看到了一點 「V2.0」?是啊,那個小混蛋是什麼造成了所有的痛苦...

+0

剛開始這個相同的練習。很高興知道要注意的項目。 – Rajesh