提供手機串接權限驗證問題


#1

大家好,

由於需要開放API提供手機APP呼叫,
到利用給一組 secret key ,
用時間 + secret key 作加密,
之後比對這組加密的 KEY,
相同才能做後續動作。

但 APK 似乎可以被反解譯…
secret key 就會被竊取…
這樣做似乎不可行…

想請問大家,
開放給手機APP呼叫的API,
都是如何做權限驗證?

以上,謝謝大家!


#2

OAuth or session key 即可

自己當 OAuth provider 可以用 doorkeeper 達成,而 session key 就要自己管了

簡單的解釋,不管是 OAuth 還是 session key 的作用都非常類似
每支手機在 init 時和 server 換一個 token 回家並儲存好,這就是雙向的 secret key,要做高級點可以自幹雙向雙 key 共 4 把( 2 x (public + private)),也就是 init 時手機把 public key 丟回 server,而 server 回傳該手機專用的 public key,則傳給對方時都用對方的 public key 加密,對方收到後都用自己的 private key 解密,然後設定過期時間即可(超過一定時間未使用就刪除該 key 並從 init 開始[登入])

OAuth 的話會自動更新 token(類似一定時間內換新的 token)而自幹也可以做出類似的機制就是

okay 以上,你就可以控制所有的手機的 key 是否過期,包括哪組 key 是屬於哪個使用者(發 key 後可以登入,登入後該 key 屬於該使用者,可以限制把數,還可以在網頁上顯示是否要移除)

單一的 secret key 通常在金流系統用而已,面對的對象是已知且信任的對象,但在手機上每個都是無主的,所以每個手機一把 key 也都很正常哩