2014-11-03 81 views
6

我已將Satellizer與各種社交登錄提供程序(Facebook,Twitter和Google)合併到我的應用程序中。我的堆棧包括:AngularJS(UI路由器)和NodeJS/Express。OAuth:如何設置動態回調URL?

我似乎遇到了挑戰,爲用戶身份驗證設置動態回調URL。我的應用沒有擁有一致的登錄URL,例如http://example.com/login,因爲我的所有URL都是基於動態和令牌的,例如:http://example.com/XH12aT1771。實際上,我的登錄用戶體驗是一種模式疊加,並且沒有任何一致的登錄頁面。

我的系統與OAuth集成的挑戰在於,通過模式疊加將用戶登錄到我的應用後,我想將它們放回到它們所在的確切房間(或標記)中,而不是將它們重定向到某些回調URL頁面,因爲這將是一個糟糕的用戶體驗。

是使我的OAuth回調網址硬編碼的唯一方法,如:http://example.com/success,然後在用戶點擊/success頁面後將用戶重定向回它們的令牌?這真的是做這種事情的唯一方法嗎?

讓我知道如果您需要更多的問題的詳細信息,感謝您的幫助。

+0

我已經使用了第三方的OAuth 2對於某些應用程序,但從來沒有發現需要創建靜態回調網址。它應該只匹配基礎網址(即http:// example。),並且不應該在此後寫什麼。 – Kop4lyf 2014-11-20 09:54:09

+0

您是否嘗試將其設置爲http:// localhost? – DaImTo 2014-11-24 14:08:27

+1

回調URL通常是硬編碼到特定路徑。也許你可以嘗試讓他們擊中你的令牌路線,然後將他們重新路由到回叫網址?我堅持在我的node.js應用程序http://passportjs.org/所以不知道什麼是可能的。 – cchamberlain 2014-11-25 00:02:07

回答

1

我不知道這Sattelizer給你的選項,這也將取決於授權服務器(AS)支持的選項,但是:

從安全角度來看,建議使用固定回調URL,以防止由於AS端破碎/馬虎的URL匹配而可能發生的一些攻擊,或者由於未使用令牌的頁面上的嵌入式圖像/ iframe導致RP端第三方意外泄漏令牌等等。

因此,無論是否有其他方法,無論如何都要使用固定回調URL並且您可以(希望)將原點關聯起來帶有狀態參數的URL,該參數被髮送出去或放入cookie中,並在消費回調URL上的標記後恢復它。

1

我對Satellizer並不熟悉,但我已經構建了一個基於動態url的oauth回調結構。

$callback_url = Configure::read('Your.base') . 'connect/provider/signin/' . $invite_code; 

我們oAuth關閉一個唯一的URL,將某人放在一個特定的房間。

1

我對Satelizer並不熟悉,但經過短暫的閱讀後,似乎有可能在登錄後配置回調URL。

// Google 
$authProvider.google({ 
    url: '/auth/google', 
    authorizationEndpoint: 'https://accounts.google.com/o/oauth2/auth', 
    redirectUri: window.location.origin || window.location.protocol + '//' + window.location.host, 
    scope: ['profile', 'email']; 
    scopePrefix: 'openid'; 
    scopeDelimiter: ' ', 
    requiredUrlParams: ['scope'], 
    optionalUrlParams: ['display'], 
    display: 'popup', 
    type: '2.0', 
    popupOptions: { width: 452, height: 633 } 
}); 

在這裏,他們配置重定向uri直接到位置,用戶當前在。 見Satelizer Configuration

這不是你要找的東西嗎?

0

好像答案應該是什麼kfis說還是 -

$authProvider.loginRedirect = '/'; // Change this relative path 

每 - Satellizer