「OAuth認証」を含む日記 RSS

はてなキーワード: OAuth認証とは

2016-11-14

Webサービスを作っているが、ぶっちゃげ辞めたい。遠くに行きたい

会社の新事業(?)として、催し物関するまとめサイト的なものDBデザインまでを1人でやっている。平たく言ってしまえば会員非会員制の wordpressを1から作る物で、ユーザーログイン画面(Oauth認証含む)から記事一覧画面〜詳細画面まで計20ページ以上を回している。他社の事情は分からないにせよ、それにしても異常過ぎるページ量だ。Ruby On Railsで作った?とされる株式会社リスタなどと見比べてみてもざっと2倍はある。

案件としては地雷なのは分かっていたが、他に就職出来る所がないから仕方なく入社転職するにもある程度形にしないと次の就職で響く。30過ぎてただでは行かないが、転職タイミングがずれるのはかなり痛い。終わるに終わらせられず大変困っている内に、早8ヶ月の月日が経過しようとしていた。

社員数名の会社なのだが、上は上で怪しい物だ。意味不明に自信満々なのも気になる所。まあ、小規模な会社上層部なんてそんなもん。うちは大手に無い何かを持っているだ、財務諸表に出て来る上場企業売上高を見ずに良く言えたもんだ。「複雑になってきたか ら、良くはなってきている」等俺から見て意味不明言葉の数々。一体この企画は何処に向かおうとしているのだろう か?このままでは半永久的にリリースが始まらない。以下、やる気などとうにない俺が辞めたい理由を延々と言うので付き合って欲しい。

理由1:大風呂敷を広げ過ぎる

理由1は俺の主観的な物であるが、この世の全ての催しをターゲットにしているからだ。結局ATNDとconpassのような集客100人〜1,000人くらいの催し、会場のイスをみんなで準備するような催しに行く俺。やるならやるで地域を絞る、集客数を絞ると言ったものがあればもうちょい話に乗っただろう。

今やってる事は催しの存在を知ってもらう事に特化してるが、何処のサイトでもそれはまあ同じなんだよな。ただというか席数がどれだけか?って機能がないから、当日の集客状況の目処が立てにくい。からあんま薦めにくいし、実際どれだけ反響あったかが調べにくい点で個人的にアウトだ。なもんで小規模な催しならばガンガンpeatix等を使って欲しいと思っている。俺が今の話のネガティブキャンペーンを展開するのも、仮にリリースしてもそこまでサポートができず、恐らく無駄機能の追加に時間が割かれるからだ。これでは主催者申し訳ないし、俺がどうしようもないのでこのような形を取らせて頂いた。

そもそも集客力の低い、集客目標数の低い催しは広告費をかけないしかけられないため、おおっぴろに告知したりはしないように見える。この為一般に知られていない催しの方がこの世には多いと推察する。さらに高年齢層で携帯電話を持っていない人がメインの場合など、Webサイトを使わず無駄な経費を使わなくとも、成り立ってる催しすら有りそうだ。「最初は大きい催しの広告を...」とまたまた意味不明な事を。催しの主催者出展者の事を考えてないのに何ができようか?

事業は程よい規模で!

以下蛇足ながら、大風呂敷を広げる事が良いとは限らないよと言う事例を延々と話す。最近イオンモールがばかばか立っている。しかしながら広過ぎて特定の店しかいかないし、商品探しにくいんだよねぶっちゃげ。時たま利益を回収できないテナントから撤退していくのを目にする。

さて2016年11月現在第2四半期報告書(第92期第2四半期(自 平成28年6月1日 至 平成28年8月31日)) P28を見るに、GMS事業は183億1800万円もの赤字を計上している。代わりに、スーパーマーケット事業は135億1500万円の黒字、小型店事業営業利益22億9500万円。なんと巨大スーパーイオン全体のお荷物になってしまっている。何年計画なのかは知らないが、数字の上では止めた方がよさそうである

一方この手のスーパー一番重要なのは食品だろう。自分家計を見るに、毎月収入20%以上を食費が占めている。ここで毎月各個人収入20%近辺をメシが占めていると仮定すれば、各コンビニスーパードラッグストアなどはそこからどうしのぎを削るかの戦いなはずだ。自分の行きつけのドラッグストアなんぞは入ってからすぐの所に、在庫処分であろう新鮮味の欠けるジュース冷蔵庫。専門外の店なのにカップラーメンに明るかったり、やっぱ食品と言うのは売る方からすりゃあ撒き餌なんだろうな。実際問題そんな広い店舗は要らないこともあるし、イオンの事例が当てはまるのかは別にせよ、大風呂敷を広げるのは考えものだと思っている。

理由2:企画会社資金の面で怪しい

2点目は資金面が怪しいからだ。さて今の企画は会員からお金を取る流れだ。つまり月々の売上(貸方)は、売上高(円)=会費(円/人)×有料会員数(人)」分を見込む。一方で支出(借方)「人件費累計(円)=従業員数(人)×一人当たりの人件費(円/人)」の人件費がかかる。以下その様子をこのシートにまとめたフェルミ推定の参考にでもして欲しい。

仮に事業開始までに12ヶ月かかり、会員登録が出来たとして、月々10人ペースで会員が増加したとする(退会者を考えてはみたが、これでも現実的でない数字)。月々の人件費190,000円、従業員数1人、会費を980[円/人]と仮定する。まず利益が発生するまでに必要な最低の金額が228万円、そして俺の人件費がペイされるのが60ヶ月かかり、利益率で+になるまで32ヶ月必要だ。月々20人ペースで会員が増加したとても、40ヶ月はかかりそれまでは少なくとも−となる。

一方で何となく俺が時期を伸ばしたら、作って終わりになる危険性もありそう。加え営業さんが居たとしたら、ただでさえ零細企業後ろ盾ないはずなのに月10件は無理もありそうな話だ。と言うのはさておき、Webサービス言えど初期投資人件費に少なくとも数百万かかるし、それまでの間利益は一切出ないと言うのは覚えて帰って欲しい。これはゲーム会社販売を1ヶ月延期すると、売上を回収するのが1ヶ月遅れるため利益率が下がる事に似ている。

最後

上は悪い人ではなさそうだったけど、負ける方が濃厚な気がするし、負けが込んでヤケになりそうな気もする。心苦しいが履歴書職務経歴書を書く時間となったようだ。あん名前を出したく無かったため、敢えてこのはてな匿名ダイヤリーに書かせて頂いた次第である。このような場を提供して頂いている、株式会社はてなには感謝気持ちである

2013-08-28

Facebook PHP SDKでのOAuth認証がうまく行かない気がする

自分の作ったアプリだけかと思ったらCodeIQとかもログインできなくて安心(?)した。

https://www./login.php~にリダイレクトされる。

仕様変更した、とか特にアナウンス出ていない気がするけど……Facebook側で何か弄っているのだろうか。

勘弁して欲しいなぁ。

2013-03-23

プロテクト強化後のもふったーも予想以上に酷かった件(追記あり)

ことのあらまし
  1. Twitterクライアントもふったーの作者「TweetDeckのconsumer secret簡単に抜ける、終わってる」(http://blog.livedoor.jp/blackwingcat/archives/1760823.html)
  2. 別の誰か「もふったーのconsumer secretも簡単に抜ける」(http://d.hatena.ne.jp/kusano_k/20130318/1363640368)
  3. もふったーの作者「プロテクト強化した」(http://blog.livedoor.jp/blackwingcat/archives/1762970.html)

プロテクトかけたアルゴリズムを実装したバージョン差し替え」たなんて言われると本当に「プロテクト」がかかっているのか確かめてみたくなるのが人情というもの。というわけで、プロテクト強化後のもふったー(v0.9.6b)からconsumer secretが抜けるか試してみた。結論から言うと、あっけなく取り出せた。以下に手順を記す。

手順

動作がよくわかっていないアプリケーションを解析して仕様を明らかにすることをリバースエンジニアリングと呼ぶ。ソフトウェアリバースエンジニアリングは基本的に対象を逆アセンブルしてひたすら読むことによって行う(その補助に1命令ずつ実行してレジスターやメモリーの様子を観察することもある)。しかし、よっぽど小規模なものでなければオブジェクトコード全体を逆アセンブルして最初から最後まで読むなんてのは不可能だ。人間の読速度には限界があるし、時間も有限だからだ。そして、詳しい動作を知りたい部分というのは全体のごく一部であることが多いので全逆アセンブリを読むのには非常に無駄が多い。

からリバースエンジニアリングはいかに詳らかにすべき動作を行っているコードを絞り込むか(=読むべき逆アセンブリを少なくするか)が重要になる。

この場合も同様だ。TwitterGUIクライアントを頭から読むのは到底無理なので、どうやって解析すべきコードの範囲を狭めるかを考えた。それにはOAuth認証においてconsumer secretがどのような役割を果たすのかを知る必要がある。

OAuth認証で、consumer secretはそのままサーバーに送信されたりはしない。signatureの生成にHMAC-SHA1が使われ、その鍵にconsumer secretが使われる。HMACは次のように算出される。

HMAC (K,m) = H ((K ⊕ opad) ∥ H ((K ⊕ ipad) ∥ m))

ここで

である

まずはこのあたりから攻めようと思った。SHA-1計算はいくつか特徴的な定数が使われるので、そこからSHA-1計算に使われているであろう関数444190を特定する。この関数エントリーポイントに中断点(ブレークポイント)を設定してOAuth認証をさせるべくもふったーの「ブラウザ認証ボタンを押す。狙い通り中断するので関数を抜けるまで実行する。関数401100の4012DAに出た。少し下を見るとこのようになっている。

CPU Disasm
Address   Hex dump          Command                                      Comments
00401311  |.  33F6          xor     esi, esi
00401313  |   8D8C24 A40000 /lea     ecx, [local.54]
0040131A  |.  394C24 14     |cmp     dword ptr ss:[local.90], ecx
0040131E  |.  75 0E         |jne     short 0040132E
00401320  |.  3BF5          |cmp     esi, ebp
00401322  |.  73 29         |jae     short 0040134D
00401324  |.  0FB68434 A400 |movzx   eax, byte ptr ss:[esi+esp+0A4]
0040132C  |.  EB 21         |jmp     short 0040134F
0040132E  |   3BF5          |cmp     esi, ebp
00401330  |.  73 1B         |jae     short 0040134D
00401332  |.  8B5424 18     |mov     edx, dword ptr ss:[local.89]
00401336  |.  52            |push    edx                                 ; /Arg1 =  [LOCAL.89]
00401337  |.  8D8C24 FC0000 |lea     ecx, [local.33]                     ; |
0040133E  |.  8BD6          |mov     edx, esi                            ; |
00401340  |.  E8 CB4D0000   |call    00406110                            ; \mofooter.00406110
00401345  |.  83C4 04       |add     esp, 4
00401348  |.  0FB6C0        |movzx   eax, al
0040134B  |.  EB 02         |jmp     short 0040134F
0040134D  |   33C0          |xor     eax, eax
0040134F  |   34 5C         |xor     al, 5C
00401351  |.  888434 B80000 |mov     byte ptr ss:[esi+esp+0B8], al
00401358  |.  83C6 01       |add     esi, 1
0040135B  |.  83FE 40       |cmp     esi, 40
0040135E  |.^ 72 B3         \jb      short 00401313
00401360  |.  895C24 3C     mov     dword ptr ss:[local.80], ebx
0040134F  |   34 5C         |xor     al, 5C

が注意を引く。もしかしてこれはopadとのxorではないか?

00401351  |.  888434 B80000 |mov     byte ptr ss:[esi+esp+0B8], al

xorした結果を格納している。

先ほどの中断点は無効化しこのループを抜けた地点である401360まで飛ばす。この時点でesp+0B8を見ると次のようになっている。

Hex dump
64 2E 16 64|37 04 32 6D|0F 0D 26 29|3A 37 1F 2F|
18 69 6E 6E|0D 25 29 33|11 34 29 69|12 36 24 1E|
05 16 33 6A|04 3B 0E 68|7A 5C 5C 5C|5C 5C 5C 5C|
5C 5C 5C 5C|5C 5C 5C 5C|5C 5C 5C 5C|5C 5C 5C 5C|

あとはこれと5Cとをxorすればconsumer secretが手に入る。終わり。

追伸

はてな増田スーパーpre記法で半角の<>が含まれていると投稿が出来ないのを早く直してください。

3/23 18:45追記

もふったーの作者から反応があった。「本気だったつもりのもふったーのデバッグ処理が残ってた」らしい(http://blog.livedoor.jp/blackwingcat/archives/1763951.html)。修正したとのことなので最新版(v0.9.6e)を見てみた。確かに若干変更されているが何の問題もない。SHA-1の呼び出しに中断点を設置して渡されているバイト列を見るだけ。

CPU Disasm
Address   Hex dump          Command                                  Comments
00401324  |.  8D4424 20     |lea     eax, [local.102]
00401328  |.  50            |push    eax                             ; /Arg1 = 
00401329  |.  E8 623A0400   |call    00444D90                        ; \mofooter.00444D90

ここでeaxが指すメモリーを見ると以下のようになっている。

01 23 45 67|89 AB CD EF|FE DC BA 98|76 54 32 10|
F0 E1 D2 C3|00 02 00 00|00 00 00 00|40 00 00 00|
40 4F 73 53|62 54 5C 7E|59 57 53 42|55 45 7A 57|
61 47 7A 5B|42 4F 7B 61|5D 66 5E 7A|42 7F 40 63|
79 66 05 55|79 4C 60 42|02 10 36 36|36 36 36 36|
36 36 36 36|36 36 36 36|36 36 36 36|36 36 36 36|

先頭32バイトゴミ無視して0x36とxorすればconsumer secretが得られる。

2013-03-03

RailsとTwitterBootstrapでエロ動画ソーシャルブックマークWebサービス作った

Rails + Twitter bootstrapでエロ動画ソーシャルブックマークWebサービスソーシャルオナニー=ソシャニーを作りました


こちらです http://www.socianie.com


【なにこれ?】

かっこつけた言い方をすると、

「いっぱいエロ動画あるけど結局みんなどんなお宝動画で抜いてるの?という日常的な疑問への答え」

とかでしょうか。

実際どんな事が出来るサービスかというと、基本的には、はてなブックマークのようにエロいページをブックマークする(その時に、コメントを付記することができる)というものです。

サイト内の他のユーザーフォローすることができ、TwitterのようにTimelineのようなものがあってそこにフォローしている人がブックマークしたページが表示されます(そのページが、xvideos,fc2などの有名サイトならば埋め込みプレーヤーですぐ再生出来ます。)

まりフォローしてる人の最新お気に入りエロ動画がチェックできます

ブックマークされたページはそれぞれが固有のページを持っており、タグを付ける事ができます

ユーザーブックマークしたもの動画一覧で横断的に見ることができ、並び替え・検索などが出来ます

ブックマーク数で今日ランキング今週のランキングなどが見れます

あと、累計ブックマーク数によってユーザーランクが上がったりします。

TwitterOAuth認証ログインが出来ますTwitterツイート投稿などはしません。また、サイト内の名前アイコンTwitterのものを流用するかどうかも自分で決められます。)



他のエロサイトとの違いは、3つあると思っています

ソーシャル機能。他にも世の中に色々素晴らしいエロサイトがありますがそれらはソーシャル機能を持つものが少ない。

②上記の話とちょっと被ってますが、他のサイトは基本コンテンツ自体を自動クローリングするけれどソシャニーはそこをユーザー自身に委譲しているため、集まってくる動画の質はそれに比べて上がるんじゃないかというのと、

エロサイトありがちな出来るだけごちゃっと感を無く広告も無しでTwitter bootstrap使って小綺麗な感じ


作成後記】

Webサービス作るならRailsかな楽で便利らしいしというざっくりとしたイメージからRailsで作り始めましたが、

ネット情報入門書に取り組んでもサンプルと同じモノは作れても実際自分が作りたいモノになると、で、どうやるの?となりなかなか進みませんでした。

Railsは色々と勝手によろしくやってくれる機能が多すぎて実際何が起きてんの?というのがわかりづらいというのが第一印象でした。

色々試行錯誤した結果、一番参考になったのはRails tutorial( http://ruby.railstutorial.org/ruby-on-rails-tutorial-book )でした。

英語ですがバージョンは新しいしBootstrapの使い方もわかるしサンプルがTwitterクローンサービスを作ろうというなかなかおもしろものなので途中で飽きること無く取り組めました。

何かを学ぶ時は、モチベーションが続く形の学び方が一番いいと思いました。

僕はエロ動画が大好きなので、エロサイトというのもモチベーションの1つです(ただ、作業中に脱線して気づいたらキーボードではなく下半身に手が伸びているという事もありました。)

また、上記のチュートリアルテスト駆動開発なのでSpecテストをモリモリ書いているのですが、とりあえずはテストに関しては何をやってるのかざっと眺める程度で精読しませんでした。

まずは全体像を把握して何が必要か把握したかたからです。結果的に最後までやりきれたので良かったと思います



あとは、Rails固有の知識ではなくWebサービス全般の知識で足りないな、と思ったときネット上や本屋立ち読みで済ましました。

ネットで細切れにお勉強している場合本屋で体系的にまとまっている本をざっと読むと意外に抜けてる知識が保管されたり脳内インデックスが作れるのでいいと思いました。


バージョン管理gitを使いました。

理由はみんなが良い良いというので乗っておくかという安易なものです。

実際のところgitの良い所を使い倒せているのかというと全くそんな事ないですね。

せいぜいstash位でしょうか。あとbisectとか。


リポジトリ最初DropBoxに作ってたのですが、途中からBitbucketを使いました。

GitHubを使わなかった理由はBitbucketプライベートリポジトリ無料で持てるからです。

また、恥ずかしがり屋なのでGithubで公開は敷居が高いと感じたからです。

初のRailsプロジェクトというのもありソースがイケてないので恥ずかしいのです。

いつかイケメンコードGithubで公開してオレツエーしたいものです。


サーバーエロOKのところを探すのがなかなか難しく結局海外VPSを使いました。

Linodeというところですが、他との違いを挙げるとiPhoneアプリ経由で再起動などが出来たりします。あまりこの機能使ってないですが。

OSベタCentOSです。

構成はpassenger+apacheで、DBSQLite特にLBなどはないです。

諸々構築後に人気が出た時困らないように負荷分散のお勉強なんぞもやりかけましたがまずは不要かなということで辞めました。

ちなみにサーバーがUS西海岸なのでSSHで作業するとエディタちょっともっさりすることがありました。


プロジェクト管理は、会社でも使ってるのでRedmineかなと思ったのですがどうせ一人だしRedmineのUIきじゃないのでTrello( https://trello.com/ )を使いました。

TODO,Doing,Done,Bug,Suspendのリストを作ってやること忘れないように管理しました。

ふと出先で思いついた機能とかをiPhoneでスイっと追加など出来て便利でした。


正月に公開してお友達界隈で見てもらったんですが、よかれと思って作ったChrome拡張CSRFの対策が不備あり結局ブックマークレットにしたり、

ソースを見てもらったら設計RestfulじゃないとかControllerがfat過ぎるModelに押しこめなどアドバイスをもらえたり無知な僕には色々とお勉強になりました。

出来たものはしょぼいものですが、「Webサービス作ったことないコンプ」は少し解消出来た気がします。


以上、月19ドルも払ってるのにお友達だけで使われてるのも寂しいので増田でまとめついでに宣伝してみました。

叩かれるんでしょうか。怖いです。いじめないで。

2012-04-02

iPadSafariTwitterからログアウト→はまちちゃんTweet一覧に

Twitterの@logoutははまちちゃん(ぼくはまちちゃん!)なのではないかと思われる。なぜかというと、このアカウントで「こんにちはこんにちは!」と発言しており(以下のURLから確認できる)、名前が「Hamachiya2」となっているかである

https://twitter.com/logout/status/85500046010884096

このアカウントで呟かれている内容の全貌が気になるかもしれないが、それを確認するために以下のURLアクセスしても無駄である

http://twitter.com/logout

普通PCから普通Webブラウザを使って上のURLアクセスしても、@logoutの発言内容は表示されず、代わりに「Twitterからログアウトしますか?」と表示される。これではダメだ。

@logoutの発言内容を確認するには、例えばTogetterを介せばいい。

http://togetter.com/id/logout

どうしてこのアカウントお話をしているのかというと、iPadSafari場合は上に示した挙動にならないからであるhttp://twitter.com/logoutアクセスすると、ログアウト確認ではなく、@logoutの発言内容が表示される

これが問題になるのは、TwitterOAuth認証依存しており、頻繁にユーザを変更するWebサービスを開発した時である

ご存知の通り、TwitterOAuth認証の代わりに使用するWebサービスログインする場合、まずTwitterのものログインしなければならない。OAuthは「このWebサービスに、あなた名義でTwitterAPIを叩く権利を与えますか?」と訊きにくるのが肝であるから、当然ながら「あなた」名義で予めログインし、OAuthに訊かれる前にTwitter(と自分Webブラウザ)に「あなた」とは誰かを教えておく必要がある。

残念なことに、この認証方法採用すると、ユーザ切り替えのたびにユーザは「Webサービスからログアウト」と「Twitterからログアウト」の二度手間を強いられることになる。Webサービスからログアウトだけでは不十分で、次に別のユーザログインしようとした際に「どのユーザログインしますか?」と訊いてこなくなってしまう(ついさっきログアウトしたユーザで再度ログインしてしまう)。何故ならTwitterは、既に誰かの名義でログインしている状態だと、「あなたが誰か、私は既に知っていますよ」と言わんばかりにユーザ認証スキップするからである

ユーザストレスを減らす方法は、せいぜいWebサービスからログアウトした直後の画面に「このページからTwitterログアウトできます」というリンクを張っておくくらいのものである。ここでいよいよ、先ほどのURLが登場する。 http://twitter.com/logout へのリンクを張っておけば、ユーザは「ログアウトしますか?Yes/No」に答えるだけで済むはずだ。

この方法はうまくいった…iPadSafariを除いてはiPadhttp://twitter.com/logout を押すと、@logout(はまちちゃんアカウント)のTweet一覧に飛ばされる。ログアウトはできない。

どうしてこのような仕様になっているのか、私にはよくわからない。また、どこにリンクを張れば、どのようなデバイスでもお手軽にTwitterからログアウトできるのか、わからない。ご存知の方がいらしたら、是非とも教えていただきたい。

2012-01-30

http://anond.hatelabo.jp/20120129234626

ありがとう

じゃやっぱ手動で消したんですね。もったいない

(裏を返せば、先にはてなID消すと増田を削除する手段はなくなるってことか。TwitterID消すとOAuth認証する各種サービスへのアクセス権も失っちゃうみたいなもんで)

 
アーカイブ ヘルプ
ログイン ユーザー登録
ようこそ ゲスト さん