私はサポートエンジニアになりたい

元教師・現開発エンジニアの挑戦

シングルサインオンとは何か

シングルサインオン(SSO)とは

1つのIDとパスワードで複数のサービスにログインできる仕組み

シングルサインオンの仕組み(4種)

代行認証方式

クライアントの代わりに専用エージェントが代行して各システムのID・パスワードを入力する方式

詳細な仕組み
  1. 専用エージェントがユーザー認証を行う
  2. アカウント情報DBから各システムのID・パスワードを取得
  3. ID・パスワード等をメモリ上に保持
  4. 各システムのログイン画面を検知し、ID・パスワードを自動入力
導入に必要なもの
  • クライアントPCに専用のエージェントを導入
  • アカウント情報DBに接続できる環境
特徴
  • 導入するシステムの制限が少ない
  • クライアントサーバシステムにも導入可能

リバースプロキシ方式

リバースプロキシという中継サーバを介して認証を行う

詳細な仕組み
  1. リバースプロキシサーバに対してWeb認証を実施
  2. リバースプロキシサーバから認証済みCookieが発行される
  3. ログインしたいサービスに対してリバースプロキシサーバ経由でアクセス
導入に必要なもの
  • リバースプロキシサーバ(とここを経由する設計)
特徴
  • 既存システムへの影響なく事前検証ができる
  • 導入から開始までの工数を短縮しやすい

エージェント方式

 

詳細な仕組み
  1. エージェントを導入したWebシステムにWeb認証を実施。
  2. WebシステムはSSOサーバに対して認証チェックを実施
  3. Webシステムから認証済みCookieが発行される
  4. Cookieを保持して各Webシステムにアクセスする
  5. SSOサーバがアクセス権限をチェック
導入に必要なもの
  • SSOサーバ
  • 導入するエージェントに対応しているSSOシステム
特徴
  • リバースプロキシ方式に比べアクセス集中によるボトルネックが発生しにくい
  • 既存のネットワーク環境に変更を加えなくていい
  • エージェントに対応していないシステムには導入できない

SAML認証方式(Security Assertion Markup Language)

主にクラウドのリソースを含めたSSO実装に使う仕組み

詳細な仕組み
  1. クラウドサービス(Service Provider)へアクセスする
  2. IdP(Identity Provider)に対する認証要求(SAML)を生成し、IdPへリダイレクト
  3. IdPはSPからの認証要求を受けてクライアントに認証要求実施(ログイン画面表示)
  4. ユーザー認証実施
  5. ログイン成功後、IdPは認証応答(SAML)を生成し、SPへリダイレクト
  6. SPはIdPより送られた認証応答(SAML)を受けて検証し、クラウドサービスへの自動ログインを実施
  7. 自動ログイン後、クラウドサービス画面が表示
SAML(Security Assertion Markup Language)とは

異なるインターネットドメイン間でユーザー認証を行うための標準規格。

特徴

Google WorkspaceやMicrosoft365などのクラウドサービスがSAMLに対応

参考

【図解つき】シングルサインオン(SSO)とは?機能や仕組み、導入メリット、デメリットをわかりやすく解説! | mobiconnect(モビコネクト)

シングルサインオンの仕組みとは?5つの認証方式とメリットも解説!|ITトレンド

シングルサインオン(SSO)の選び方と仕組みの解説 | アシスト

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ブラウザを使って動作確認ができ、クライアントを開発する側は想定しているレスポンスをファイルに準備すればテストできる。(手間の省略)

REST vs SOAP

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 (モノのインターネット)、モバイル・アプリケーション開発、サーバーレス・コンピューティングなどの先進的なコンテキストに向いている。

 

SOAP と REST とは|API の種類| Red Hat

ステートフルとステートレス

セッションの状態の話

セッションとは:通信における開始から終了まで(ログインからログアウトまでを指すことが多い)

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はステートフル)

インターネット用語1分解説~UDPとは~ - JPNIC

参考

ステートフルとステートレスの違いとは?

https://www.redhat.com/ja/topics/cloud-native-apps/stateful-vs-stateless

TCPとUDPの違いは

TCP(Transmission Control Protocol)の特徴

  • コネクション型プロトコル
    通信相手とコネクションを確立することで相手に通信が届いていることを確認させ、コネクションを確立させる。
    TCPにおけて使用されるコネクションの確立のことを3ウェイハンドシェイクという
  • (コネクションを確立するため)信頼性が高い
    事前にコネクションを確立し、双方で送受信できていることを都度確認している。
  • 制御機能を備えている
    ネットワークの状況によっては正しくデータが伝送されないケースがある。そのためウィンドウ制御やセグメントの再送制御、送信するセグメントの量の制御などが用意されている
  • 重複を排除する
    重複を排除することでデータが1つであることを保証する

TCPの方はTCPセグメント呼ぶ

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が使われているサービス

  • 音声や動画などのリアルタイムサービス
  • モニター監視
  • DNS
  • NTP
  • SNMP
  • TFTP

 

TCPとUDPの主な特徴6つ|代表的なポート番号や使い分ける方法も紹介 | テックマガジン from FEnetインフラ

UDPヘッダのフォーマットとサイズの基本 | IT情報サイト ”ITアベイラボ”

 

 

https://www.youtube.com/watch?v=AJzb503B5QI

OSとは何か説明する

OSとは

複数のプログラムを同時に安定動作させ、ハードウェアコンポーネントを効率的に使えるよう抽象化するためのプログラム。

OSの構成

ブートローダ

PC起動時によびだされ、OSなどを動かす仕事をしているプログラム。

PCの電源を入れる→BIOS起動→ブートローダ起動→OS起動

カーネル

ハードウェアとソフトウェアをつなぐソフトウェア

  • リソース管理
    • CPU(プロセッサ)
      多数のプログラムの中からプロセッサを割り当てるべきものを選択する
    • メモリ
      各プロセスにメモリを割り当て、全体としてメモリが不足した場合、対処を決定する
    • 入出力デバイス(キーボード・HDD・USBなど)
      アプリケーションから入出力要求を受け付け、適切なデバイスに対して入出力を実行し、デバイスを使用するための便利な方法を提供
  • プロセス管理
    アプリケーションの実行を許可し、ハードウェア抽象化などの機能でサポートする
  • メモリ管理
    ユーザープロセスの要求に応じて安全なメモリアクセスを提供
  • バイス管理
    ドライバが物理的にデバイスにアクセスするための入出力ポートやメモリ空間を用意する
  • システムコール

デーモン

LinuxUNIXにおいてメモリ上に常駐してるプロセス

Windowsでは「サービス」とよばれる

利用者の操作とは無関係に処理を行うバックグラウンドプロセスの一種で、別のプログラムや機器、通信相手など外部からの要求を受け付けて処理を実行したり、あらかじめ設定されたタイミングで自律的に特定の処理を実行したりする。

systemd, syslogd, tcpd, httpd, sshdなど

シェル

ユーザからの入力をPCに伝えるプログラム

ユーザが入力したコマンドをシェルが解釈しカーネルに伝え、

カーネルはシェルから伝達された要求に応えてプログラムの操作を行い、その結果をシェルに返す。

返ってきた結果をシェルが解釈し、ユーザ側に出力する

-----

カーネル←シェル←ユーザ

カーネル→シェル→ユーザ

-----

デスクトップ環境

ツールバー、ファイル、背景画像などから成り立つ。

デスクトップ環境のおかげで画面表示でのPC操作環境が快適に行える。

アプリケーション

様々な情報やプログラミングを組み合わせ、OSの機能を拡張していく事ができ、PC操作が快適に使えるようにしてくれるようにプログラムされたソフトウェア

OSの機能

  • タスク管理
  • メモリ管理
  • ファイル管理
  • 周辺機器の管理
  • APIの提供

参考

milestone-of-se.nesuke.com

qiita.com

www.geekly.co.jp

e-words.jp

recruit.cct-inc.co.jp

PCの電源を入れたら何が起こるのか

  1. PCの電源スイッチを入れる
  2. マザーボード上のCPUが動き、ROMの中にあるBIOSというプログラムが動く
  3. BIOSがキーボード・HDD・グラフィックボードなどを初期化する(POST(Power-On Self-Test))
  4. ハードディスクからOSを起動するプログラムを取り出してRAM(メインメモリ(主記憶装置(作業用の領域)))にロードする(ブート・ストラップ)
  5. CPUが「メイン・メモリ」からWindowsのプログラム・データの処理命令を<フェッチ>して(=取り出して)、その命令内容をデコードする(解釈する(CPUが理解できる機械語))
  6. CPUがデコードした命令内容を実行していくことで、プログラム(Windows OS)が開始される

OSが立ち上がるまでの処理の流れ

  1. 演算・制御装置である「CPU」が、Windows OSのプログラム・データ(=ソフトウェア)を、「ハード・ディスク」から取得して、作業用の「メイン・メモリ」の上にロード(=展開)する
  2. CPUが「メイン・メモリ」からWindowsのプログラム・データの処理命令をフェッチして(取り出して)、その命令内容をデコードする(解釈する(CPUが理解できる機械語))
  3. 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ローダ・ルーチン:ディスク装置の先頭セクタを読み込む処理をする。

参考

nobusan.jp

vanilla.xrea.jp

 

www.youtube.com

 

www.youtube.com

http://www.cs.reitaku-u.ac.jp/infosci/os-kiso/os2003/text02-1.pdf

ブートローダー(ブートストラップローダー)とは? - パソコンの選び方と買い方

plaza.rakuten.co.jp

プロキシとは何か説明する

プロキシとは何か

インターネットを接続する際にネットワークの内部と外部をつなぐ代理をする。

フォワードプロキシ

クライアントとWebサーバの間に位置し、伝言する役割。(クライアント側に位置する)

クライアントはフォワードプロキシに要求し、フォワードプロキシがWebサーバに要求する。

フォワードプロキシはWebページからページを受け取りクライアントへ返す。

メリット1:Webサーバにアクセスしたのが誰かが分からない

フォワードプロキシありとなしを比較する。

フォワードプロキシなしの場合、WebサーバはクライアントPCの情報が分かる。

フォワードプロキシありの場合、Webサーバはプロキシサーバの情報が分かる。

-----

フォワードプロキシなし

クライアント → Webサーバ

クライアント ← Webサーバ

フォワードプロキシあり

クライアント → プロキシサーバ →→→ Webサーバ

クライアント ← プロキシサーバ ←←← Webサーバ

-----

例えば、悪意のあるWebサイトがアクセス元である私たちの情報がばれてしまうのを防ぐことができます。

メリット2:接続先の制限

フォワードプロキシありとなしを比較する。

フォワードプロキシなしの場合、悪意のあるサイトへアクセスできる

フォワードプロキシありの場合、悪意のあるサイトへアクセスを防止する

フォワードプロキシなし

クライアント → 悪意のあるサイト

フォワードプロキシあり

クライアント → プロキシサーバ ✖→→→ 悪意のあるサイト

-----

リバースプロキシ

クライアントとWebサーバの間に位置する。(Webサーバ側に位置する)

Webサーバの負荷分散が役割。

-----

クライアント →→→ リバースプロキシサーバ → WebサーバA

                        → WebサーバA(複製)

-----

キャッシュサーバ

訪問したWebページを一時的に保持することで、応答時間が速くなる。

ログを残すことができる。

Webサーバへの負荷を減らせる。

 

再度読んで理解したい↓。

luminati.site

ログを取得できる

luminati.site

プロキシの設定

PCが使用するプロキシサーバを設定することができる。

 

www.pasoble.jp

目的

社内のTeamsでSharePointが見れない方がいた。

wifiVPNで社内のネットワークにつなぐと見れるが社内のランケーブルでつなぐと見れなかった。

調査したところプロキシの設定がダメだったらしい。

参考文献

nettrouble.docomo.ne.jp