シングルサインオンとは何か
シングルサインオン(SSO)とは
1つのIDとパスワードで複数のサービスにログインできる仕組み
シングルサインオンの仕組み(4種)
代行認証方式
クライアントの代わりに専用エージェントが代行して各システムのID・パスワードを入力する方式
詳細な仕組み
- 専用エージェントがユーザー認証を行う
- アカウント情報DBから各システムのID・パスワードを取得
- ID・パスワード等をメモリ上に保持
- 各システムのログイン画面を検知し、ID・パスワードを自動入力
導入に必要なもの
- クライアントPCに専用のエージェントを導入
- アカウント情報DBに接続できる環境
特徴
- 導入するシステムの制限が少ない
- クライアントサーバシステムにも導入可能
リバースプロキシ方式
リバースプロキシという中継サーバを介して認証を行う
詳細な仕組み
- リバースプロキシサーバに対してWeb認証を実施
- リバースプロキシサーバから認証済みCookieが発行される
- ログインしたいサービスに対してリバースプロキシサーバ経由でアクセス
導入に必要なもの
- リバースプロキシサーバ(とここを経由する設計)
特徴
- 既存システムへの影響なく事前検証ができる
- 導入から開始までの工数を短縮しやすい
エージェント方式
詳細な仕組み
- エージェントを導入したWebシステムにWeb認証を実施。
- WebシステムはSSOサーバに対して認証チェックを実施
- Webシステムから認証済みCookieが発行される
- Cookieを保持して各Webシステムにアクセスする
- SSOサーバがアクセス権限をチェック
導入に必要なもの
- SSOサーバ
- 導入するエージェントに対応しているSSOシステム
特徴
- リバースプロキシ方式に比べアクセス集中によるボトルネックが発生しにくい
- 既存のネットワーク環境に変更を加えなくていい
- エージェントに対応していないシステムには導入できない
SAML認証方式(Security Assertion Markup Language)
主にクラウドのリソースを含めたSSO実装に使う仕組み
詳細な仕組み
- クラウドサービス(Service Provider)へアクセスする
- IdP(Identity Provider)に対する認証要求(SAML)を生成し、IdPへリダイレクト
- IdPはSPからの認証要求を受けてクライアントに認証要求実施(ログイン画面表示)
- ユーザー認証実施
- ログイン成功後、IdPは認証応答(SAML)を生成し、SPへリダイレクト
- SPはIdPより送られた認証応答(SAML)を受けて検証し、クラウドサービスへの自動ログインを実施
- 自動ログイン後、クラウドサービス画面が表示
SAML(Security Assertion Markup Language)とは
異なるインターネットドメイン間でユーザー認証を行うための標準規格。
特徴
Google WorkspaceやMicrosoft365などのクラウドサービスがSAMLに対応
参考
【図解つき】シングルサインオン(SSO)とは?機能や仕組み、導入メリット、デメリットをわかりやすく解説! | mobiconnect(モビコネクト)
Webサービスについて
SOAP
元々は「Simple Object Access Protocol」の略称がSOAPであり、HTTPやXMLなどのインターネット標準技術を使うことによって、Web上の分散オブジェクトをプラットフォームの壁を越えて利用することを可能にするために開発されたプロトコルである。その後、Webサービス間で交換されるメッセージについての汎用的なフレームワークとなった。
SOAPメッセージというXMLによってメッセージ交換をおこなう方法
ネットワーク上に存在しているオブジェクトにアクセスするためのプロトコルとして開発されたもの。
Webサービスの主役、SOAP誕生の背景:Webサービスのキホン(1) - @IT
REST
「Representational State Transfer」の略称がRESTである。
HTTPを使って通信をおこなう手法であり、HTTPのGETメソッドを使ってあるURLにアクセスすると、XMLが返ってくる。
WebブラウザにURLを入力すれば動作確認できる
Webブラウザで容易に動作確認ができるため、すでに存在しているサービスに対しては「まずはアクセスしてみて必要な情報が得られるか確認し、実際に使うかどうかはそれから考える」という使い方ができる。わざわざテスト用アプリを作る必要がない。
クライアント/サーバを開発する際、サーバを開発する側はWebブラウザを使って動作確認ができ、クライアントを開発する側は想定しているレスポンスをファイルに準備すればテストできる。(手間の省略)
WSDL
WSDLはWeb サービスを記述するための XML 表記のこと
SOAPの定義方法にWSDL(Web Services Description Language)がある。
開発ツールにWSDL文書を読み込ませることによって、Webサービスを呼び出すモジュールのコードを自動生成できるようになる。
WSDL:Webサービスのインターフェイス情報:Webサービスのキホン(4) - @IT
XML
「eXtensible Markup Language」の略称がXMLである。
タグで囲むことで構造を表現する言語(マークアップ言語)のひとつ
(ファイルの書き方ルールのひとつ)
※マークアップ言語とは、文章を構造化するための言語
タグを使うことで、要素名を自由に定義することが可能。
使いどころ
インターネットを経由して複数のアプリケーション間でデータをやり取りするのに適した構造を持っています。
このため、膨大なコンテンツの中から一定のルールに基づいて情報を抽出したり、複数のWebサービスを組み合わせたアプリを制作したりする際に非常に便利です。
記述例
<?xml version="1.0" encoding="Shift_JIS" ?>
<staff>
<member>
<name>田中</name>
<position>サポートエンジニア</position>
<age>29歳</age>
</member>
<member>
<name>Aさん</name>
<position>営業</position>
<age>20歳</age>
</member>
</staff>
https://wa3.i-3-i.info/word1577.html
マークアップ言語とは↓
https://mynavi-creator.jp/blog/article/what-is-mark-up-language
XMLのことを幅広く書いている↓
XMLとは?XMLの基礎と使い方をわかりやすく解説!HTMLとの違いは?タグと要素・文書の構造やフォーマット作成もご紹介| ITフリーランスエンジニア案件ならA-STAR(エースター)
XMLの基礎を理解しよう 〜これだけ知っていれば大丈夫!〜:新入社員のためのXML入門講座(1) - @IT
SOAPとRESTの共通点
Web アプリケーション間のデータ通信を可能にするAPIの構築方法を定義する。
RESTは、一連のアーキテクチャ原則です。
SOAPは、World Wide Web Consortium (W3C) が管理する公式プロトコルです。
主な違いは、SOAP はプロトコルであるが、REST はプロトコルではないという点
SOAP
SOAP は標準プロトコルです。元々、異なる言語および異なるプラットフォームで構築されたアプリケーションが通信できるようにすることを目的に設計されました。
REST
REST は、軽量の Web サービスおよびモバイル・アプリケーションのニーズに合わせた一連のアーキテクチャ原則。
REST API へのデータのリクエストは、HTTP を介して送信されます。要求が受信されると、REST用に設計された API は、さまざまな形式(HTML、XML、プレーンテキスト、JSON)でメッセージを返すことができます。
JSONは、あらゆるプログラミング言語で読み取ることができ、人間も機械も読み取り可能で軽量であるため、メッセージ形式としてよく利用されています。このように、RESTful API はより柔軟で、セットアップが容易です。
SOAPとRESTのどちらを選ぶか
SOAP Web サービスは、多くのエンタープライズのニーズに合わせた組み込みのセキュリティとトランザクション・コンプライアンスを提供しますが、それによってサービス自体は重くなります。
REST API は軽量で、IoT (モノのインターネット)、モバイル・アプリケーション開発、サーバーレス・コンピューティングなどの先進的なコンテキストに向いている。
ステートフルとステートレス
セッションの状態の話
セッションとは:通信における開始から終了まで(ログインからログアウトまでを指すことが多い)
https://wa3.i-3-i.info/word1791.html
トランザクションの話も出てくる
トランザクションとは:「商品を渡して、代金を受け取る」のように「ここからここまでワンセット」になっている処理のこと(DBとかでよく耳にした)
https://wa3.i-3-i.info/word16325.html
ステートフル
サーバがクライアントのセッションの状態を保持する
セッションの状態によってリクエストに対するレスポンスが変わる
何度も繰り返し使うもの
毎回同じサーバを使ってユーザーの要求を処理する
ウィンドウの場所、ユーザー設定、最近のアクティビティなどを追跡する
例:オンラインバンキング, 電子メール
ステートフルなプロトコル(何を保持しているか?どんなコネクションかに注目)
FTP, TCP, BGP, OSPF, EIGRP, SMTP, SSH
ステートレス
サーバがクライアントのセッションの状態を保持しない
セッションの状態によらずリクエストに対するレスポンスが変わらない
過去のトランザクションに関する情報や参照は保持されない
単一の要求に対して単一の応答をする
ステートレスなプロトコル
HTTP, UDP, IP, DNS (UDPの性質を使っているこれらもたぶんそうDHCP, NTP, SNMP)
HTTP
HTTPは状態を保持できないからセッション管理でユーザーを特定しよう!みたいな話になる(cookieとかの話ここ)
「HTTPはステートレスだからセッション管理が必要」を詳しく解説 | OFFICE54
UDP
コネクションが確立しているかどうかを確認する状態(ステート)がない(逆に3ウェイハンドシェイクをするTCPはステートフル)
参考
https://www.redhat.com/ja/topics/cloud-native-apps/stateful-vs-stateless
TCPとUDPの違いは
TCP(Transmission Control Protocol)の特徴
- コネクション型プロトコル
通信相手とコネクションを確立することで相手に通信が届いていることを確認させ、コネクションを確立させる。
※TCPにおけて使用されるコネクションの確立のことを3ウェイハンドシェイクという - (コネクションを確立するため)信頼性が高い
事前にコネクションを確立し、双方で送受信できていることを都度確認している。 - 制御機能を備えている
ネットワークの状況によっては正しくデータが伝送されないケースがある。そのためウィンドウ制御やセグメントの再送制御、送信するセグメントの量の制御などが用意されている - 重複を排除する
重複を排除することでデータが1つであることを保証する
TCPのサーバポートの例
HTTP:TCP80番ポート
SMTP:TCP25番ポート
TCPが使われているサービス
- Web通信
- メール通信
- ファイル転送
後で見る
TCP vs RTP:何故RTPが必要なのか?:Geekなぺーじ
第13回 データグラム通信を実現するUDPプロトコル:基礎から学ぶWindowsネットワーク(1/4 ページ) - @IT
C言語-ソケットプログラミング_UDPソケット CapmNetwork
トランスポート層の仕事 - ネットワークエンジニアを目指して
UDP(User Datagram Protocol)の特徴
UDPヘッダーを付与したデータの通信単位をUDPデータグラムという
UDPのサーバポートの例
DNS:UDP53ポート
UDPが使われているサービス
TCPとUDPの主な特徴6つ|代表的なポート番号や使い分ける方法も紹介 | テックマガジン from FEnetインフラ
UDPヘッダのフォーマットとサイズの基本 | IT情報サイト ”ITアベイラボ”
OSとは何か説明する
OSとは
複数のプログラムを同時に安定動作させ、ハードウェアコンポーネントを効率的に使えるよう抽象化するためのプログラム。
OSの構成
ブートローダ
PC起動時によびだされ、OSなどを動かす仕事をしているプログラム。
PCの電源を入れる→BIOS起動→ブートローダ起動→OS起動
カーネル
ハードウェアとソフトウェアをつなぐソフトウェア
- リソース管理
- プロセス管理
アプリケーションの実行を許可し、ハードウェア抽象化などの機能でサポートする - メモリ管理
ユーザープロセスの要求に応じて安全なメモリアクセスを提供 - デバイス管理
ドライバが物理的にデバイスにアクセスするための入出力ポートやメモリ空間を用意する - システムコール
デーモン
Windowsでは「サービス」とよばれる
利用者の操作とは無関係に処理を行うバックグラウンドプロセスの一種で、別のプログラムや機器、通信相手など外部からの要求を受け付けて処理を実行したり、あらかじめ設定されたタイミングで自律的に特定の処理を実行したりする。
systemd, syslogd, tcpd, httpd, sshdなど
シェル
ユーザからの入力をPCに伝えるプログラム
ユーザが入力したコマンドをシェルが解釈しカーネルに伝え、
カーネルはシェルから伝達された要求に応えてプログラムの操作を行い、その結果をシェルに返す。
返ってきた結果をシェルが解釈し、ユーザ側に出力する
-----
カーネル←シェル←ユーザ
カーネル→シェル→ユーザ
-----
デスクトップ環境
ツールバー、ファイル、背景画像などから成り立つ。
デスクトップ環境のおかげで画面表示でのPC操作環境が快適に行える。
アプリケーション
様々な情報やプログラミングを組み合わせ、OSの機能を拡張していく事ができ、PC操作が快適に使えるようにしてくれるようにプログラムされたソフトウェア
OSの機能
- タスク管理
- メモリ管理
- ファイル管理
- 周辺機器の管理
- APIの提供
参考
PCの電源を入れたら何が起こるのか
- PCの電源スイッチを入れる
- マザーボード上のCPUが動き、ROMの中にあるBIOSというプログラムが動く
- BIOSがキーボード・HDD・グラフィックボードなどを初期化する(POST(Power-On Self-Test))
- ハードディスクからOSを起動するプログラムを取り出してRAM(メインメモリ(主記憶装置(作業用の領域)))にロードする(ブート・ストラップ)
- CPUが「メイン・メモリ」からWindowsのプログラム・データの処理命令を<フェッチ>して(=取り出して)、その命令内容をデコードする(解釈する(CPUが理解できる機械語))
- CPUがデコードした命令内容を実行していくことで、プログラム(Windows OS)が開始される
OSが立ち上がるまでの処理の流れ
- 演算・制御装置である「CPU」が、Windows OSのプログラム・データ(=ソフトウェア)を、「ハード・ディスク」から取得して、作業用の「メイン・メモリ」の上にロード(=展開)する
- CPUが「メイン・メモリ」からWindowsのプログラム・データの処理命令をフェッチして(取り出して)、その命令内容をデコードする(解釈する(CPUが理解できる機械語))
- CPUがデコードした命令内容を<実行>していくことで、プログラム(=Windows OS)が開始される
https://atmarkit.itmedia.co.jp/fdotnet/dotnetwork/dotnetwork01/dotnetwork01_02.html#runprogram
CPUの基本動作
- フェッチ
- メモリから命令を読み込む
- デコード
- 読み込んだ内容を解釈する
- 実行
- 命令に従って演算を行う
http://www2.kobe-u.ac.jp/~tnishida/course/2012/IS/3.CPU.pdf
メモ
BIOS(バイオス):「Basic Input Output System」の略。パソコンのマザーボードに搭載されており、電源を入れて最初に起動するプログラムです。コンピューター内を初期化し、接続されているディスプレイやキーボードなどの周辺機器を読み込んで利用できる状態に整え、それから外部記憶装置(ストレージ)からOSを実行します。
ブートまたは ブートストラップ:コンピュータの電源を入れてからOSが起動するまでの処理の流れ
ブートローダ:このブート処理を行うソフトウェアのことである。
ROMは「ブート・プログラム」と「ROMローダ・ルーチン」というプログラムが記憶されている。
ブート・プログラム:マザーボード上のチップやメモリ、接続されている周辺装置などを初期化する。
ROMローダ・ルーチン:ディスク装置の先頭セクタを読み込む処理をする。
参考
http://www.cs.reitaku-u.ac.jp/infosci/os-kiso/os2003/text02-1.pdf
プロキシとは何か説明する
プロキシとは何か
インターネットを接続する際にネットワークの内部と外部をつなぐ代理をする。
フォワードプロキシ
クライアントとWebサーバの間に位置し、伝言する役割。(クライアント側に位置する)
クライアントはフォワードプロキシに要求し、フォワードプロキシがWebサーバに要求する。
フォワードプロキシはWebページからページを受け取りクライアントへ返す。
メリット1:Webサーバにアクセスしたのが誰かが分からない
フォワードプロキシありとなしを比較する。
フォワードプロキシなしの場合、WebサーバはクライアントPCの情報が分かる。
フォワードプロキシありの場合、Webサーバはプロキシサーバの情報が分かる。
-----
フォワードプロキシなし
クライアント → Webサーバ
クライアント ← Webサーバ
フォワードプロキシあり
クライアント → プロキシサーバ →→→ Webサーバ
クライアント ← プロキシサーバ ←←← Webサーバ
-----
例えば、悪意のあるWebサイトがアクセス元である私たちの情報がばれてしまうのを防ぐことができます。
メリット2:接続先の制限
フォワードプロキシありとなしを比較する。
フォワードプロキシなしの場合、悪意のあるサイトへアクセスできる
フォワードプロキシありの場合、悪意のあるサイトへアクセスを防止する
フォワードプロキシなし
クライアント → 悪意のあるサイト
フォワードプロキシあり
クライアント → プロキシサーバ ✖→→→ 悪意のあるサイト
-----
リバースプロキシ
クライアントとWebサーバの間に位置する。(Webサーバ側に位置する)
Webサーバの負荷分散が役割。
-----
クライアント →→→ リバースプロキシサーバ → WebサーバA
→ WebサーバA(複製)
-----
キャッシュサーバ
訪問したWebページを一時的に保持することで、応答時間が速くなる。
ログを残すことができる。
Webサーバへの負荷を減らせる。
再度読んで理解したい↓。
ログを取得できる
プロキシの設定
PCが使用するプロキシサーバを設定することができる。
目的
社内のTeamsでSharePointが見れない方がいた。
wifiやVPNで社内のネットワークにつなぐと見れるが社内のランケーブルでつなぐと見れなかった。
調査したところプロキシの設定がダメだったらしい。