概要
ASP.NET MVCのデフォルト機能として存在するOAuth/OpenIDのログイン(?)を試してみる。
※用語(日本語)あってます?
いわゆるTwitter連携と言うやつ?
目次
個人認証付きプロジェクトの作成
通常通りプロジェクトの追加を行う
MVC選択後、認証の変更を選択
デフォで「個別のユーザーアカウント」が選択されているので特に問題ないと思います。
TwitterAPIキーの取得
ツイッター開発者サイトにアクセス後アプリを登録してAPIキーを取得
参考
- http://aspnet-mvc.clock-up.jp/contents/tutorial/twitter-app 🔗
- https://blogs.msdn.microsoft.com/chack/2012/11/19/asp-net-mvc-oauthopenid-facebook-twitter-google-microsoft/ 🔗
アプリケーション名、概要と URL を入力します。ローカルでデバッグする場合の URL は、Twitter の場合は http://localhost:XXXX/ 🔗 形式は使えないため、 http://127.0.0.1:XXXX/ 🔗 形式のローカル ループバック IP アドレスを使用します。Callback URL には、ログイン後に表示したい URL を入力します。
https://blogs.msdn.microsoft.com/chack/2012/11/19/asp-net-mvc-oauthopenid-facebook-twitter-google-microsoft/ 🔗
注意書きがある通りローカルで開発している場合は127.0.0.2で登録しましょう。
Twitter連携を行う
[プロジェクト]/App_Start/StartUp.Auth.csに先ほど取得したAPIキーを追記
デフォのコードだとおそらくこんな感じ
赤括弧部分を編集
//app.UseTwitterAuthentication(
// consumerKey: "",
// consumerSecret: "");
//コメント解除後APIキーとAPIシークレットを追加
app.UseTwitterAuthentication(
consumerKey: "XXXX",
consumerSecret: "XXXX");
とりあえず実行してみる
なんでいつもいつもすんなりいかないんだよwwww
とりあえずエラーが証明書がどうとか言ってる。
証明書ってよくあるあれでしょ?あれって感じだけど
とりあえずエラーコピペでググる。
http://pronama.azurewebsites.net/2015/10/20/asp-net-mvc-twitter-auth-exception/ 🔗
発見、記事自体はVBなので注意
さらにソースとしてすたっくおーばーふろーがあったのでGoogle翻訳で読んでみる
なにやら証明書チェックを追加しろとのこと
Microsoft アカウントに属するバック チャネル通信で使用されるエンドポイントの検証に使用する、固定された証明書検証コントロールを取得または設定します。
https://msdn.microsoft.com/ja-jp/library/dn450244(v=vs.111).aspx 🔗
証明書の正当性が検証できないから証明の何かを
追加しないといけませんよ見たいなノリですよね?
とりあえずコピペを下記の通り行ったが失敗
//検証用に証明書の追加※失敗例
app.UseTwitterAuthentication(
consumerKey: "XXXX",
consumerSecret: "XXXX"
//参照設定:Microsoft.Owin.Securityを追加すること
BackchannelCertificateValidator = new CertificateSubjectKeyIdentifierValidator(new[]
{
"A5EF0B11CEC04103A34A659048B21CE0572D7D47", // VeriSign Class 3 Secure Server CA - G2
"0D445C165344C1827E1D20AB25F40163D8BE79A5", // VeriSign Class 3 Secure Server CA - G3
"7FD365A7C2DDECBBF03009F34339FA02AF333133", // VeriSign Class 3 Public Primary Certification Authority - G5
"39A55D933676616E73A761DFA16A7E59CDE66FAD", // Symantec Class 3 Secure Server CA - G4
"5168FF90AF0207753CCCD9656462A212B859723B", //DigiCert SHA2 High Assurance Server CA
"B13EC36903F8BF4701D498261A0802EF63642BC3" //DigiCert High Assurance EV Root CA
})
);
もう追記じゃなくてソースが違います。ありがとうございました。
//デフォ
app.UseTwitterAuthentication()
//スタックオーバーフローのソース
app.UseTwitterAuthentication(new TwitterAuthenticationOptions{})
コピペ人間ここに敗れる オプションも設定するぜみたいな感じ?
//検証用に証明書の追加
app.UseTwitterAuthentication(new TwitterAuthenticationOptions
{
//識別子?が「:」から「=」になっているので注意
ConsumerKey = "XXXX",
ConsumerSecret = "XXXX"
//参照設定:Microsoft.Owin.Securityを追加すること
BackchannelCertificateValidator = new CertificateSubjectKeyIdentifierValidator(new[]
{
"A5EF0B11CEC04103A34A659048B21CE0572D7D47", // VeriSign Class 3 Secure Server CA - G2
"0D445C165344C1827E1D20AB25F40163D8BE79A5", // VeriSign Class 3 Secure Server CA - G3
"7FD365A7C2DDECBBF03009F34339FA02AF333133", // VeriSign Class 3 Public Primary Certification Authority - G5
"39A55D933676616E73A761DFA16A7E59CDE66FAD", // Symantec Class 3 Secure Server CA - G4
"5168FF90AF0207753CCCD9656462A212B859723B", //DigiCert SHA2 High Assurance Server CA
"B13EC36903F8BF4701D498261A0802EF63642BC3" //DigiCert High Assurance EV Root CA
})
});
再チャレンジ
上手くいきました。
参考サイト様
- http://aspnet-mvc.clock-up.jp/contents/tutorial/twitter-app 🔗
- http://aspnet-mvc.clock-up.jp/contents/tutorial/twitter-auth 🔗
- https://blogs.msdn.microsoft.com/chack/2012/11/19/asp-net-mvc-oauthopenid-facebook-twitter-google-microsoft/ 🔗
- http://pronama.azurewebsites.net/2015/10/20/asp-net-mvc-twitter-auth-exception/ 🔗
- https://stackoverflow.com/questions/25011890/owin-twitter-login-the-remote-certificate-is-invalid-according-to-the-validati 🔗
- http://fnya.cocolog-nifty.com/blog/2014/03/aspnet-mvc-5-tw.html 🔗
雑感
すっきりさっぱりツイートの投稿まで行きたかった。
時間がうまく使えてない感が半端ないです。