[英]Digits Authentication with Parse Server
在構建一個小型Android應用程序時,我決定嘗試使用Digits登錄並使用電話號碼登錄並使用Parse作為后端。
如何驗證與解析服務器的Digits會話?
我從下面的示例開始,盡管我不確定這是否是“正確的”(改編自本文 )。
Android客戶端:
從數字請求身份驗證(oauth?)令牌和用戶ID
一種。 發送數字密鑰和機密,檢索對象
使用Parse驗證此會話
一種。 發送電話號碼,身份驗證令牌和用戶ID
灣 如果授權有效,則接收帶有用戶信息的確認
解析:
身份驗證端點采用電話號碼,身份驗證令牌和用戶ID
一種。 使用Twitter端點進行驗證
灣 將身份驗證令牌哈希和用戶ID插入到Sessions表中(將來的請求將ping此表,而不是twitter)
C。 返回確認給客戶
上面的說法很有道理,但是使用Github登錄的解析示例似乎在做些微的不同。 使用Parse,對第三方的初始請求是從Parse服務器而不是客戶端發出的。
Github要求發送一個“狀態”參數,這似乎就是為什么Parse示例從服務器發送其初始請求的原因,而Digits則不需要這樣的參數。 這會使數字身份驗證的安全性降低嗎? 有沒有辦法使此過程更加安全/正確?
這是我當前解決方案的要點 。
在“解析”方面,我發送了一個http請求,該請求看起來類似於以下內容:
// Within a /verify_credentials webhook
Parse.Cloud.httpRequest({
method: 'GET',
url: req.get(headers[0]),
headers: {'Authorization': req.get(headers[1])},
success: function(httpResponse) {
var obj = JSON.parse(httpResponse.text);
res.status(httpResponse.status).send("success");
},
error: function(httpResponse) {
res.status(400).json({
error: 'Unable to make a twitter request'
});
}
});
在Android方面,我將HTTP請求發送到Parse服務器,並在標頭中包含Parse會話信息:
TwitterAuthConfig authConfig = TwitterCore.getInstance().getAuthConfig();
// Cast from AuthToken to TwitterAuthToken
TwitterAuthToken authToken = (TwitterAuthToken)session.getAuthToken();
OAuthSigning oAuthSigning = new OAuthSigning(authConfig, authToken);
// First value should be the location we're querying to twitter.
// The second is the actual validation information
Map<String, String> authHeaders = oAuthSigning.getOAuthEchoHeadersForVerifyCredentials();
try {
cloud.verifyCredentials(
authHeaders.get("X-Auth-Service-Provider"),
authHeaders.get("X-Verify-Credentials-Authorization"),
session.getId(),
callback);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.