2016-04-04 69 views
0

我想使用OpenID Connect來允許用戶使用兩個單獨的服務,同時只在一個地方保持用戶的密碼。如何防止RP以用戶名義執行未經授權的操作?

說銀行服務允許與Web瀏覽器用戶

  1. 看看他們的賬戶餘額
  2. 做銀行轉帳。

對於上述操作,服務A始終必須通過服務B提供的API。B還維護所有密碼。假設B不能相信A,並希望確保每一次銀行轉賬都由用戶確定。只要會話正在運行,讀出帳戶餘額應該是可以任意的。

這怎麼能在OpenID Connect中完成?

最安全的方法是讓用戶接受特定的銀行轉賬信息,並在用戶的瀏覽器,然後簽署銀行轉賬的全部內容,因此該服務的只能轉發到服務B.

另一個(不太安全的方式)將會有一些時間有限的「事務」範圍/聲明,允許服務A在用戶(空白支票)授權的時間窗口內執行交易,直至其到期。

使用OpenID Connect可以輕鬆實現上述任何一種嗎?

回答

1

可以定義每個事務作用域,以便獲得用戶對事務的同意,但服務A必須使用包含事務作用域的OpenID Connect身份驗證請求將用戶重定向到服務B.然後從提供商返回的訪問令牌將僅允許該交易,該交易可以通過引用賬戶,金額,到期時間等的交易ID來識別。

+0

您提到的那個交易ID,在實踐中會是什麼? 「一次性範圍」? –

+0

是的,「一次性作用域」是這裏的建議 –

+0

我明白了。並且服務B可能被編程爲以易於由用戶讀取的方式顯示交易信息。因此,看起來我想要做的事情很容易以安全的方式實現 - 我只是想知道爲什麼Google對於「openid connect」或「openid connect」沒有產生「一次性範圍」和「一次性索賠」 OAuth的」。這似乎是許多公司的用例...... –

相關問題