育英祭を終えて
kawa.xxx
kawalog
通常のIDとパスワード以外にもう一つ認証要素を使う方式のことです。リスト型アカウントハッキングなどが流行しているので、オンにできるサービスは自衛のために有効にすべきですね。
特定の Organization に所属するメンバーの二要素認証の設定状況を定期的に確認したかったのですが、web インターフェイスに毎回アクセスしてチェックするのは忘れるし、めんどくさい。そこで、プログラムで定期的に確認して、slack とかに通知できるようにしようと思いました。
今回主に使用したライブラリは Octokit.net です。これは Github が公式で出している Github API の .net のラッパーです。
最初は User に個別に 2FA の情報を持っているものかと思ってコードをにらめっこしていたけど、それらしきプロパティは見つからず。ぐぐってみたらこの記事が出てきて、取得時に絞れば良さそうということで、 GetAll() のオーバーロードを調べてみたらありました。以下のような感じでいけます。
var users = await github.Organization.Member.GetAll("yourOrganization", OrganizationMembersFilter.TwoFactorAuthenticationDisabled);
コード全体は Github に公開しています。
上記のコードにてコンソールアプリを作成して常時起動している Windows サーバのタスクスケジューラに登録して毎朝確認できるようにしました。毎朝こんな感じで Slack にポストされます。
だれだ!二要素認証無効なのは!!