復元したい次の機能は同期です
サーバーとのデータ。
これを行うには、2つの問題を解決する必要がありました。ファイルを後続の認証でアカウントにリンクすることと、実際の同期自体です。
そして、このトピックは非常に広範囲にわたることが判明したため、ここで問題の最初の部分の解決についてお話します。
当時、MSNポータルはすでにMicrosoftオンラインサービスへのアクセスの中心であったため、Moneyがこのポータルのアカウントを必要としたのは当然です。
ファイルをアカウントにリンクした後、デバイス間でデータを同期し、取引記録をオンラインで表示し、さらに請求書を受け取るための機能が利用可能になりました。
Moneyでユーザーを認証するために、Passportサービス、特にそのxmlプロトコルが使用されました。
認証手順全体は次のように機能しました。
1. mnypass.ini MoneyファイルのMnyPassClientXMLパラメーターで指定された URL を使用して、さまざまなプロトコルを使用してPassportサービスにアクセスするためのリンクをリストしたxmlファイル(client.xml)を要求します。 ファイルには、ドメインに従ってグループ化されたリンクのセットが含まれています。
2. mnypass.iniのMnyPassDefaultDomainパラメーターの値に従って、受信したファイルでドメインレコードが選択されます。 このエントリの要素には、次のようにHTTP POST要求が生成されるURLが含まれます。
<?xml version="1.0"?> <LoginRequest> <ClientInfo name="mnypassport" version="1.35"/> <User> <SignInName>user@mail.com</SignInName> <Password>123456</Password> <SavePassword>false</SavePassword> </User> </LoginRequest>
要素の意味は説明なしで理解できます。
応答として、サーバーから認証の成功に関するメッセージを受け取る必要があります。
<LoginResponse Success="true"> <Redirect>https://moneycentral.msn.com/home.asp?did=1&t=AqHf*J!puuvpcU01kK*PA9&id=229</Redirect> </LoginResponse>
リダイレクトはオプションのフィールドです。 利用可能な場合、Moneyは指定されたURLでGET要求を行いますが、結果はどこにも表示されません。
またはエラーメッセージ:
<LoginResponse Success="false"><Error Code="e5b"/></LoginResponse>
Codeは 、e8a、e15、e14、e13、e12、e11、e10、e9、e4、e3、e2、e1、e8、e5b、e5aのいずれかの値です。
デコードエラーはpassport.htmファイルにあります
HTTP応答のステータスも処理中に考慮されます。
肯定的な応答を受信すると、ユーザーは承認されたと見なされ、Moneyは次のステップに進みます。
3. 2つのパラメーターPASSPORTURLおよびUPSURLの値は、misurls.xmlファイルから取得されます。
PASSPORTURLは 、GET要求を生成するために使用され、その結果は他のどこにも関与しません。
ただし、 UPSURLからのURLは、次の形式のPOST要求を形成するために使用されます。
<MnyOpts><CryptSeed/><GUID/><UserGuid/></MnyOpts>
要素の空の値は、Moneyがサーバーから値を受け取りたいことを意味します。
最初の2つは簡単です。
GUID-アカウントに関連付けられているメインMoneyファイルの識別子。
UserGuid-サーバー上のユーザー識別子。
しかし、 CryptSeedは暗号化キーを弱めるのに役立つと思われます。 確かに言えません このパラメーターの適用を追跡しませんでしたが、明らかに使用されていません。
予想されるサーバー応答は非常に明白です。
<MnyOptResponse> <CryptSeed>1234</CryptSeed> <GUID>56159e04-fce1-4dbc-9e8e-9ca310dc69db</GUID> <UserGuid>9e79710b-ca04-4b6a-b299-38bf3c33366c</UserGuid> </MnyOptResponse>
ファイルがアカウントにまだ添付されていない場合、 GUIDパラメーターの値は空になります。 次に、このパラメーターの値がファイル識別子と一致しない場合でも、Moneyはフォームの別の要求を送信します
<MnyOpts> <GUID>56159e04-fce1-4dbc-9e8e-9ca310dc69db</GUID> </MnyOpts>
ファイルをバインドします。
サーバー応答には同じ識別子が含まれている必要があります。
すべてのアクションが正常に完了すると、ユーザーは承認されたと見なされ、プログラム機能へのアクセスが許可されます。