ASP.NET MVCでTwitter連携の認証
概要
ASP.NET MVCのデフォルト機能として存在するOAuth/OpenIDのログイン(?)を試してみる。
※用語(日本語)あってます?
いわゆるTwitter連携と言うやつ?
TwitterAPIキーの取得
https://apps.twitter.com/apps.twitter.com
ツイッター開発者サイトにアクセス後アプリを登録してAPIキーを取得
参考
- Twitter連携準備 - チュートリアル的なもの - ASP.NET MVC ClockUpTips
- ASP.NET MVC で OAuth/OpenID (Facebook, Twitter, Google, Microsoft) を使う – THE TRUTH IS OUT THERE
アプリケーション名、概要と URL を入力します。ローカルでデバッグする場合の URL は、Twitter の場合は http://localhost:XXXX/ 形式は使えないため、 http://127.0.0.1:XXXX/ 形式のローカル ループバック IP アドレスを使用します。Callback URL には、ログイン後に表示したい URL を入力します。*1
注意書きがある通りローカルで開発している場合は127.0.0.2で登録しましょう。
Twitter連携を行う
[プロジェクト]/App_Start/StartUp.Auth.csに先ほど取得したAPIキーを追記
デフォのコードだとおそらくこんな感じ
赤括弧部分を編集
//app.UseTwitterAuthentication( // consumerKey: "", // consumerSecret: ""); //コメント解除後APIキーとAPIシークレットを追加 app.UseTwitterAuthentication( consumerKey: "XXXX", consumerSecret: "XXXX");
とりあえず実行してみる
なんでいつもいつもすんなりいかないんだよwwww
とりあえずエラーが証明書がどうとか言ってる。
証明書ってよくあるあれでしょ?あれって感じだけど
とりあえずエラーコピペでググる。
発見、記事自体はVBなので注意
さらにソースとしてすたっくおーばーふろーがあったのでGoogle翻訳で読んでみる
なにやら証明書チェックを追加しろとのこと
Microsoft アカウントに属するバック チャネル通信で使用されるエンドポイントの検証に使用する、固定された証明書検証コントロールを取得または設定します。*2
証明書の正当性が検証できないから証明の何かを
追加しないといけませんよ見たいなノリですよね?
学生時代にチラッと実習で使った記憶が微かにってレベルです。
とりあえずコピペを下記の通り行ったが失敗
//検証用に証明書の追加※失敗例 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 }) });
再チャレンジ
上手くいきました。
参考サイト様
- Twitter連携準備 - チュートリアル的なもの - ASP.NET MVC ClockUpTips
- Twitter連携 - チュートリアル的なもの - ASP.NET MVC ClockUpTips
- ASP.NET MVC で OAuth/OpenID (Facebook, Twitter, Google, Microsoft) を使う – THE TRUTH IS OUT THERE
- [ASP.NET MVC] Twitter 認証で「検証プロシージャによると、リモート証明書は無効です」 – プログラミング生放送
- .net - Owin Twitter login - the remote certificate is invalid according to the validation procedure - Stack Overflow
- ASP.NET MVC 5 で Twitter 認証を行う方法: ある SE のつぶやき
雑感
すっきりさっぱりツイートの投稿まで行きたかった。
時間がうまく使えてない感が半端ないです。
そしてモンスター2本目をぶち込んだので明日仕事なのに寝れる気がしません。