2016-11-18 25 views
0

我的用戶流程如下訪問API ...如何獲得承載令牌從一個MVC應用程序

  1. 用戶請求一個受保護的資源。
  2. 用戶重定向到身份驗證提供程序(例如Google)
  3. 用戶重定向回使用Cookie身份驗證的ASP.Net MVC應用程序。

這很好用,並且從IdentityServer示例跟蹤MVC示例應用程序,我可以看到我的用戶的聲明列表。

因此,我的應用程序的主頁面是使用MVC視圖呈現的,我有其他資源通過資源授權進行授權,這非常有用。

我的應用程序的下一部分是一個API。假設它是api.domain.com/stockquote

這應該只能由我的應用程序的授權用戶使用,而不是公開提供。

我已經使用Identity Server成功創建了一個Angular JS應用程序,並且明白當令牌返回時,我可以從URI獲取/id_token的值,將其存儲在localstorage中,然後使用它來形成授權頭API例如Authorization=Bearer {token}。再次很好地工作。

但是,現在我通過身份驗證到我的MVC應用程序如何獲得此令牌並將其放入本地存儲,以便我可以爲我的API調用創建標頭?

  • 我可以以某種方式從cookie中提取它嗎?

  • 在HTML流中輸出它是一個好主意,這樣JS就可以把它拿起來放到localstorage(現在猜測)。

  • 我可以使用令牌端點以某種方式獲取此令牌嗎?

回答

0

處理此問題的一種方法可能是更改您的身份驗證方式。不要在服務器端處理MVC中的回調,而要在JavaScript中處理它。然後令牌可供您存儲在本地存儲中。如果您在使用令牌的服務器端發出請求,則這可能不可行。

+0

有趣的是,如果我設置了MVC應用程序。 cookie身份驗證,但在JS中處理回調將工作?這是MVC應用程序。得到一個cookie,但我也有本地存儲的查詢字符串中的令牌? – Remotec

+0

回傳將進入一個可以擁有JavaScript的頁面。所以你可以在服務器端和JavaScript端處理請求。 – GlennSills

相關問題