我即將創建一個數據庫表來存儲OpenID登錄。我想我會包括這三列中,除了聲明的標識符:存儲OpenID端點,OP-本地標識符和領域?
- The OpenID endpoint
- The OP-Local Identifier
- The realm
- 的OpenID的版本(1或2)
你存儲這些字段?
你認爲這是合理的存儲這些領域?有以下原因:
的OpenID端點:那麼你知道哪些OpenID提供認證的用戶。也許在將來你會發現一個提供商並不是非常值得信賴,然後我認爲很有可能知道someuser.example.com是否被該提供商認證。
OP-Local Identifier:我認爲它允許我跟蹤用戶,即使她更改了她的用戶提供的標識符。 (例如,如果她的用戶提供的標識符是example.com/username,但她將其更改爲somewherese.com/username,那麼我認爲OP-Local標識符將保持不變(假定用戶繼續使用相同的OpenID提供程序) 。
的境界:我建立一個多租戶web應用程序,如果我儲存的境界,它會更容易知道,如果兩個看似不同的OpenID標識符可能代表同一個人(Google uses directed identities:你的聲明ID變化)
版本:如果將來出現某些安全問題,使用某些OpenID版本,則可能很好知道哪些用戶可能會受到影響。
用於統計收集目的的領域和端點。
(你能想出一些其他OpenID的相關值的我應該存放?比如,我想,以確定供應商。要做到這一點,就足以存儲端點?我並不需要存儲提供商的名稱?)
嗨Mewp!非常感謝您的詳細解答! – KajMagnus
好的,存儲OP-Local Identifier是沒有意義的。我沒有在[規範](http://openid.net/specs/openid-authentication-2_0.html)中找到任何地方,聲明我不應該存儲它。 - 實際上,也許我會存儲它,以防萬一我從數據挖掘的角度,以某種奇怪的方式找到它。如果不是,ALTER TABLE DROP COLUMN很快就會在將來的某一天完成。 – KajMagnus
我沒有提到我打算存儲一些用於統計收集目的的數據。例如。我可能想知道哪些領域的登錄次數最多,以及哪些終端和/或提供商是最常見的領域。 (我在問題中添加了一個列表項。) – KajMagnus