簡體   English   中英

帶有SPA + REST API的OAuth2

[英]OAuth2 with SPA + REST API

可以說我們有用Angular 2編寫的SPA並使用Spring Boot擁有REST API。 兩者都部署在不同的服務器上。 現在,我必須通過Facebook的OAuth2保護此API,但是我不知道哪種授予類型適合我的問題。

我不想成為身份驗證服務器,我不想讓facebook成為我的資源服務器,相反,我自己的REST API應該是一個資源服務器。 從FB,我只想要用戶名或電子郵件或某些標識符。

如果我理解正確,那么我必須使用隱式授權流程,因為它不是Web應用程序,如果我錯了,請糾正我。 “授權碼”授予也可以是一種選擇嗎?

我確實閱讀了幾乎所有與oauth和spring security有關的線程。但是我沒有找到與單獨服務器的SPA和REST API完全相關的任何信息。

與上述問題有關的任何鏈接/資源都應得到贊賞。

在此先感謝您,如果我做錯了事,對不起,這是我的第一篇文章。

您需要實現隱式授予流程https://oauth2.thephpleague.com/authorization-server/implicit-grant/

您需要HTTPS來確保安全。

例:

使用參數將獲取請求發送到oauthserver“授權” URL

  • response_type =令牌(有時為“代碼”)
  • redirect_uri = myclient.com或myclient.com/something(您在創建oauth客戶端時分配的那個)
  • 客戶編號= dfuvhiurehvher(無論編號如何)

一些提供程序需要其他參數,例如“范圍”。

如果一切正常,當您發送請求時。 您將使用網址中的令牌重定向到您的客戶端。

你的申請:

如果成功,您將被重定向到

您現在可以使用javascript檢索令牌值並將其存儲到localStorage,並在將請求發送到restapi( https://myrestapi.com )時將其附加

這是來自auth0.com的示例請求

  $.ajax({
    cache: false,
    url: "http://localhost:7001/api/appointments",
    headers: { "Authorization": "Bearer " + ATTACH_YOUR_TOKEN_VALUE_HERE }
  });

有關更多詳細信息,請檢查此https://auth0.com/docs/api-auth/tutorials/implicit-grant

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM