[英]OAuth2 with Angular and reactive Spring Security
我正在嘗試為我的Angular應用和Spring Webflux后端使用VK進行社交登錄。 目前,我在后端有一個端點可以提供用戶信息: localhost:8080/people/me
。 我嘗試通過以下方式在前端對用戶進行身份驗證:
ngOnInit(): void {
this.http.get(USER_INFO_URL)
.subscribe((resp: Response) => {
if (resp.status < 300) {
this.authenticated = true;
resp.json()
.then(vkUser => {
let fields: [string, string] = ['firstName', vkUser.firstName];
fields['lastName'] = vkUser.lastName;
this.user = new User(vkUser.id, fields);
});
} else {
window.location.href = AUTH_URL;
}
});
}
但是,當我的Spring應用程序將客戶端重定向到VK
進行身份驗證時, VK
不提供任何CORS
標頭,從而導致該機制失敗。
有人可以推薦一種對角/彈簧對使用OAuth2
的方法嗎? 我正在使用code
流,所以我想首先我需要在前端獲取代碼,然后將其發送到Spring后端,以便對其進行更改以獲取訪問令牌。
同時,我覺得我的方法可能是錯誤的,整個身份驗證過程應該在后端進行,而前端應該只獲得一個cookie,但是我不知道如何從前端重定向AJAX請求到VK登錄頁面,在后端進行處理,然后返回Angular應用。
如果不配置某些第三方軟件(將啟用來自您網站的跨源請求),或者將服務器端API代碼添加到您的應用中以完成登錄過程,則將無法實現。
正如我們在評論中指出的那樣,您已經在兩個請求周期內成功完成了登錄流程。 您可以使用相同的流程來獲取有效的會話,然后重定向到您的單頁應用程序。 該cookie應該設置為僅HTTP cookie(以防止其他JavaScript劫持它),但這將使您能夠針對服務器發出請求,而不會成功添加其他身份驗證參數。 在為API請求提供服務時,您將必須檢查該cookie,並編寫處理代碼以提示用戶登錄(如果cookie不存在或不再有效)。
希望有幫助!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.