<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>CAS チュートリアル &#8211; FoxDevelop</title>
	<atom:link href="https://www.foxdevelop.com/ja/category/c-ja/cas-%e3%83%81%e3%83%a5%e3%83%bc%e3%83%88%e3%83%aa%e3%82%a2%e3%83%ab/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.foxdevelop.com</link>
	<description>独立ソフトウェア開発スタジオ</description>
	<lastBuildDate>Thu, 06 Aug 2026 08:07:14 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0.2</generator>

<image>
	<url>https://www.foxdevelop.com/wp-content/uploads/2026/05/fox-svgrepo-com-1.png</url>
	<title>CAS チュートリアル &#8211; FoxDevelop</title>
	<link>https://www.foxdevelop.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>CASの実装</title>
		<link>https://www.foxdevelop.com/ja/2026/08/06/cas%e3%81%ae%e5%ae%9f%e8%a3%85/</link>
					<comments>https://www.foxdevelop.com/ja/2026/08/06/cas%e3%81%ae%e5%ae%9f%e8%a3%85/#respond</comments>
		
		<dc:creator><![CDATA[jack]]></dc:creator>
		<pubDate>Thu, 06 Aug 2026 08:07:14 +0000</pubDate>
				<category><![CDATA[CAS チュートリアル]]></category>
		<guid isPermaLink="false">https://www.foxdevelop.com/?p=7823</guid>

					<description><![CDATA[旧バージョンCASの実装方針 コア原理（CAS 1.0プロト ...]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">旧バージョンCASの実装方針</p>



<h4 class="wp-block-heading">コア原理（CAS 1.0プロトコル）</h4>



<ol class="wp-block-list">
<li>ユーザーが保護対象ページ <code>/admin/admin.aspx</code> にアクセス</li>



<li><code>web.config</code> の権限設定が匿名ユーザーを遮断し、ログインページ <code>CasEnter.aspx</code> へ自動リダイレクト</li>



<li><code>CasEnter.aspx</code> はURLに <code>ticket</code> パラメータが存在するか判定</li>
</ol>



<ul class="wp-block-list">
<li>ticketなし：CASサーバーのログイン先へリダイレクト、自サイトアドレスを <code>service</code> として渡す</li>



<li>ticket付き：<code>serviceValidate</code> APIを呼び出しCASサーバーでチケット検証を実行</li>
</ul>



<ol class="wp-block-list">
<li>CASから返却されたXMLからログインユーザー名をパース</li>



<li>検証成功後 <code>FormsAuthentication.SetAuthCookie()</code> を実行しローカルForms認証チケットを発行、対象ページへ遷移</li>



<li>以降の保護ディレクトリアクセスはASP.NET Formsがログイン状態を管理</li>
</ol>



<h4 class="wp-block-heading">web.config 設定</h4>


<pre class="wp-block-code"><span><code class="hljs language-xml"><span class="hljs-tag">&lt;<span class="hljs-name">system.web</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">authentication</span> <span class="hljs-attr">mode</span>=<span class="hljs-string">"Forms"</span>&gt;</span>
    <span class="hljs-comment">&lt;!-- loginUrlはCAS入口中継ページのCasEnter.aspxを指定 --&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">forms</span> <span class="hljs-attr">loginUrl</span>=<span class="hljs-string">"CasEnter.aspx"</span> 
           <span class="hljs-attr">defaultUrl</span>=<span class="hljs-string">"admin/admin.aspx"</span> 
           <span class="hljs-attr">name</span>=<span class="hljs-string">".LoginFormsTicket"</span> 
           <span class="hljs-attr">path</span>=<span class="hljs-string">"/"</span> 
           <span class="hljs-attr">timeout</span>=<span class="hljs-string">"40"</span> 
           <span class="hljs-attr">protection</span>=<span class="hljs-string">"All"</span>&gt;</span>
    <span class="hljs-tag">&lt;/<span class="hljs-name">forms</span>&gt;</span>
  <span class="hljs-tag">&lt;/<span class="hljs-name">authentication</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">authorization</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">allow</span> <span class="hljs-attr">users</span>=<span class="hljs-string">"*"</span>/&gt;</span>
  <span class="hljs-tag">&lt;/<span class="hljs-name">authorization</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">system.web</span>&gt;</span>

<span class="hljs-comment">&lt;!-- adminディレクトリを匿名アクセス禁止に制限 --&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">location</span> <span class="hljs-attr">path</span>=<span class="hljs-string">"admin"</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">system.web</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">authorization</span>&gt;</span>
      <span class="hljs-tag">&lt;<span class="hljs-name">deny</span> <span class="hljs-attr">users</span>=<span class="hljs-string">"?"</span>/&gt;</span>
    <span class="hljs-tag">&lt;/<span class="hljs-name">authorization</span>&gt;</span>
  <span class="hljs-tag">&lt;/<span class="hljs-name">system.web</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">location</span>&gt;</span></code></span></pre>


<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">新しいCASサーバーは標準でHTTPSを強制します。<code>casUrl</code> には <code>https://127.0.0.1:8443/cas/</code> を記述してください</p>
</blockquote>


<pre class="wp-block-code"><span><code class="hljs language-xml"><span class="hljs-tag">&lt;<span class="hljs-name">appSettings</span>&gt;</span>
  <span class="hljs-comment">&lt;!-- CAS7向けアドレス、末尾にスラッシュ必須 --&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">add</span> <span class="hljs-attr">key</span>=<span class="hljs-string">"casUrl"</span> <span class="hljs-attr">value</span>=<span class="hljs-string">"https://127.0.0.1:8443/cas/"</span>/&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">appSettings</span>&gt;</span></code></span></pre>


<h4 class="wp-block-heading">CasEnter.aspx ページコード</h4>



<h5 class="wp-block-heading">1. CasEnter.aspx フロント側</h5>


<pre class="wp-block-code"><span><code class="hljs language-xml"><span class="hljs-tag">&lt;<span class="hljs-name">%@</span> <span class="hljs-attr">Page</span> <span class="hljs-attr">Language</span>=<span class="hljs-string">"C#"</span> <span class="hljs-attr">AutoEventWireup</span>=<span class="hljs-string">"true"</span> <span class="hljs-attr">CodeBehind</span>=<span class="hljs-string">"CasEnter.aspx.cs"</span> <span class="hljs-attr">Inherits</span>=<span class="hljs-string">"CasStudy.Web.CasEnter"</span> %&gt;</span>
<span class="hljs-meta">&lt;!DOCTYPE <span class="hljs-meta-keyword">html</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">html</span> <span class="hljs-attr">xmlns</span>=<span class="hljs-string">"http://www.w3.org/1999/xhtml"</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">head</span> <span class="hljs-attr">runat</span>=<span class="hljs-string">"server"</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">title</span>&gt;</span>CAS中継ログイン<span class="hljs-tag">&lt;/<span class="hljs-name">title</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">head</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">body</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">form</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"form1"</span> <span class="hljs-attr">runat</span>=<span class="hljs-string">"server"</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">div</span>&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">asp:Label</span> <span class="hljs-attr">ID</span>=<span class="hljs-string">"Label1"</span> <span class="hljs-attr">runat</span>=<span class="hljs-string">"server"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">asp:Label</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">br</span> /&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">asp:HyperLink</span> <span class="hljs-attr">ID</span>=<span class="hljs-string">"HyperLink1"</span> <span class="hljs-attr">runat</span>=<span class="hljs-string">"server"</span>&gt;</span>再認証<span class="hljs-tag">&lt;/<span class="hljs-name">asp:HyperLink</span>&gt;</span>
        <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
    <span class="hljs-tag">&lt;/<span class="hljs-name">form</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">body</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">html</span>&gt;</span></code></span></pre>


<h5 class="wp-block-heading">2. CasEnter.aspx.cs コードビハインド</h5>



<p class="wp-block-paragraph"><br>APIをCAS3.0の <code>p3/serviceValidate</code> に更新<br>廃止されたWebClientの代わりにHttpClientを使用 </p>



<p class="wp-block-paragraph">自己署名証明書への対応追加（新CASのローカル検証に必須）<br>CAS応答XMLの名前空間を処理</p>


<pre class="wp-block-code"><span><code class="hljs language-xml">using System;
using System.Configuration;
using System.Net;
using System.Net.Http;
using System.Xml;
using System.Web.Security;

public partial class CasEnter : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        string casHost = ConfigurationManager.AppSettings&#91;"casUrl"];
        string ticket = Request.QueryString&#91;"ticket"];
        string service = Request.Url.GetLeftPart(UriPartial.Path);

        // チケット無しの場合CASログインページへ遷移
        if (string.IsNullOrEmpty(ticket))
        {
            string redirectUrl = $"{casHost}login?service={Uri.EscapeDataString(service)}";
            Response.Redirect(redirectUrl);
            return;
        }

        // チケット検証実行
        string username = ValidateTicket(casHost, ticket, service);
        if (string.IsNullOrEmpty(username))
        {
            Label1.Text = "申し訳ありません。CAS認証に失敗しました。再試行してください。";
            HyperLink1.NavigateUrl = Request.Url.AbsolutePath;
        }
        else
        {
            // Forms認証チケットを書き込みローカルログイン完了
            FormsAuthentication.SetAuthCookie(username, false);
            // 目的のページへリダイレクト
            Response.Redirect(FormsAuthentication.DefaultUrl);
        }
    }

    /// <span class="hljs-tag">&lt;<span class="hljs-name">summary</span>&gt;</span>
    /// CAS3.0 p3/serviceValidate によるチケット検証
    /// <span class="hljs-tag">&lt;/<span class="hljs-name">summary</span>&gt;</span>
    private string ValidateTicket(string casHost, string ticket, string service)
    {
        // 新CASでは p3/serviceValidate(CAS3.0プロトコル)の利用が推奨
        string validateUrl = $"{casHost}p3/serviceValidate?ticket={Uri.EscapeDataString(ticket)}&amp;service={Uri.EscapeDataString(service)}";

        // ローカルテスト用：信頼されていないSSL証明書を許可（本番環境では削除！）
        ServicePointManager.ServerCertificateValidationCallback += (s, cert, chain, err) =&gt; true;

        using var httpClient = new HttpClient();
        string xml = httpClient.GetStringAsync(validateUrl).Result;

        XmlDocument doc = new XmlDocument();
        doc.LoadXml(xml);
        XmlNamespaceManager nsMgr = new XmlNamespaceManager(doc.NameTable);
        // CAS3応答XMLの名前空間
        nsMgr.AddNamespace("cas", "http://www.yale.edu/tp/cas");

        // ユーザーノードを取得
        XmlNode userNode = doc.SelectSingleNode("//cas:authenticationSuccess/cas:user", nsMgr);
        return userNode?.InnerText;
    }
}</code></span></pre>


<p class="wp-block-paragraph">CASの実装</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.foxdevelop.com/ja/2026/08/06/cas%e3%81%ae%e5%ae%9f%e8%a3%85/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>インストール</title>
		<link>https://www.foxdevelop.com/ja/2026/08/06/%e3%82%a4%e3%83%b3%e3%82%b9%e3%83%88%e3%83%bc%e3%83%ab/</link>
					<comments>https://www.foxdevelop.com/ja/2026/08/06/%e3%82%a4%e3%83%b3%e3%82%b9%e3%83%88%e3%83%bc%e3%83%ab/#respond</comments>
		
		<dc:creator><![CDATA[jack]]></dc:creator>
		<pubDate>Thu, 06 Aug 2026 07:51:04 +0000</pubDate>
				<category><![CDATA[CAS チュートリアル]]></category>
		<guid isPermaLink="false">https://www.foxdevelop.com/?p=7807</guid>

					<description><![CDATA[旧バージョンのインストール手順 ‐ CAS 5.0以前 依存 ...]]></description>
										<content:encoded><![CDATA[
<h3 class="wp-block-heading">旧バージョンのインストール手順 ‐ CAS 5.0以前</h3>



<ol class="wp-block-list">
<li>CASサーバーはJavaで開発されており、動作には2つのコア環境が必要です：</li>
</ol>



<ul class="wp-block-list">
<li><strong>JDK（Java開発キット）</strong>：Java仮想マシン(JVM)を内蔵し、Javaプログラムを実行するための基礎環境です。</li>



<li><strong>Tomcat（Webコンテナ）</strong>：CASのwar形式Webアプリケーションを配置・実行するために使用します。</li>
</ul>



<ol class="wp-block-list">
<li>インストール手順のルール：<strong>先にJDKをインストール → 次にTomcatをインストール</strong>（Tomcatインストール時に自動的にローカルのJDK環境を探します）</li>
</ol>



<h4 class="wp-block-heading">依存環境</h4>



<h5 class="wp-block-heading">1. JDK</h5>



<p class="wp-block-paragraph">バージョン：（JDK）Java 17<br>直接リンク：<code><a href="https://www.oracle.com/cn/java/technologies/downloads/">Java Downloads | Oracle </a></code></p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/26a0.png" alt="⚠" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 注意：JDK7は古いバージョンで、旧版CASにのみ対応。新規プロジェクトでの使用は推奨しません。</p>
</blockquote>



<h5 class="wp-block-heading">2. Apache Tomcat</h5>



<p class="wp-block-paragraph">バージョン：<strong>Tomcat（Windowsインストーラー版）</strong><br><a href="https://tomcat.apache.org/">Apache Tomcat® &#8211; Welcome!</a></p>



<h4 class="wp-block-heading">インストール手順</h4>



<ol class="wp-block-list">
<li><strong>JDKのインストール</strong>
<ul class="wp-block-list">
<li>exeインストーラーを実行、インストール先を任意に指定可能</li>



<li>【重要】インストール完了後、環境変数 <code>JAVA_HOME</code>、<code>Path</code> の設定を推奨。TomcatがJava環境を正しく認識するために必要です</li>
</ul>
</li>



<li><strong>Tomcat7のインストール</strong>
<ul class="wp-block-list">
<li>インストーラーを起動すると、既にインストール済みのJDKを自動で検出します</li>



<li>Tomcatのポート（初期値8080）、管理用アカウントとパスワードを任意設定可能</li>



<li>インストール終了画面のオプション：</li>



<li> <code>Run Apache Tomcat</code>：チェックを入れるとFinishクリック後にTomcatサービスが自動起動します</li>



<li><code>Show Readme</code>：ドキュメントを参照しない場合はチェックを外して構いません</li>



<li><code>Finish</code>をクリックしインストール完了</li>
</ul>
</li>
</ol>



<h4 class="wp-block-heading">Tomcat SSL/HTTPS設定</h4>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">前提：<strong>CASプロトコルはサーバー側でHTTPSの使用を強制しており、HTTPは利用できません</strong>。そのためTomcatにSSL証明書を設定する必要があります。</p>
</blockquote>



<ol class="wp-block-list">
<li>JDK付属の <code>keytool</code> ツールを使い<strong>JKSキーストア（自己署名証明書）</strong>を作成</li>



<li>Tomcatの <code>conf/server.xml</code> を編集し、SSLコネクタを有効化</li>



<li>Tomcatを再起動し、<code>https://localhost:8443</code> にアクセスしてHTTPS動作を確認</li>
</ol>



<h4 class="wp-block-heading">自己署名証明書(JKS)の作成</h4>



<h5 class="wp-block-heading">事前準備</h5>



<ol class="wp-block-list">
<li>証明書保存用フォルダを作成：例 <code>C:\Keys</code></li>



<li><strong>管理者権限でcmdを起動</strong><br>&gt; Windows7/10/11 で通常のcmdからCドライブ直下へ書き込むと権限エラーが発生します。</li>



<li>JDK/JREのbinディレクトリへ移動</li>
</ol>


<pre class="wp-block-code"><span><code class="hljs language-javascript">cd <span class="hljs-string">"c:\Program Files\Java\jre\bin"</span></code></span></pre>


<p class="wp-block-paragraph">汎用コマンド（新しいJDKでも使用可）</p>


<pre class="wp-block-code"><span><code class="hljs language-css"><span class="hljs-selector-tag">keytool</span> <span class="hljs-selector-tag">-genkey</span> <span class="hljs-selector-tag">-alias</span> <span class="hljs-selector-tag">tomcat</span> <span class="hljs-selector-tag">-keyalg</span> <span class="hljs-selector-tag">RSA</span> <span class="hljs-selector-tag">-storepass</span> <span class="hljs-selector-tag">changeit</span> <span class="hljs-selector-tag">-keystore</span> <span class="hljs-selector-tag">c</span>:\<span class="hljs-selector-tag">Keys</span>\<span class="hljs-selector-class">.keystore</span> <span class="hljs-selector-tag">-validity</span> 36000</code></span></pre>


<h4 class="wp-block-heading">パラメータ解説</h4>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>パラメータ</th><th>意味</th></tr></thead><tbody><tr><td><code>-genkey</code></td><td>キーペアを生成</td></tr><tr><td><code>-alias tomcat</code></td><td>証明書の別名、任意指定可</td></tr><tr><td><code>-keyalg RSA</code></td><td>暗号化アルゴリズム、標準RSA</td></tr><tr><td><code>-storepass changeit</code></td><td><strong>キーストアパスワード</strong>（後のTomcat設定で使用するため必ず記録してください）</td></tr><tr><td><code>-keystore c:\Keys\.keystore</code></td><td>証明書ファイル出力先</td></tr><tr><td><code>-validity 36000</code></td><td>証明書有効期間（日数）</td></tr></tbody></table></figure>



<h5 class="wp-block-heading">対話形式での情報入力</h5>



<p class="wp-block-paragraph">コマンド実行後、順番に情報を入力します：</p>



<ol class="wp-block-list">
<li>名前：ドメイン名を入力（学習用途なら適当で可）</li>



<li>組織単位、組織名、都市、都道府県、国コード(cn)</li>



<li>情報確認で <code>y</code> を入力</li>



<li>キーパスワード：<strong>そのままEnter、キーストアパスワードと同じにする</strong></li>
</ol>



<h5 class="wp-block-heading">証明書確認コマンド</h5>


<pre class="wp-block-code"><span><code class="hljs language-php">keytool -<span class="hljs-keyword">list</span> -keystore <span class="hljs-string">"C:\Keys\.keystore"</span></code></span></pre>


<p class="wp-block-paragraph">パスワード入力後、正常に情報が出力されれば証明書作成完了です。</p>



<h4 class="wp-block-heading">Tomcat server.xml SSLコネクタ設定</h4>



<ol class="wp-block-list">
<li><code>Tomcat/conf/server.xml</code> を開く</li>



<li>コメントアウトされているSSL Connectorを探し、コメントを解除し証明書パスとパスワードを修正</li>
</ol>


<pre class="wp-block-code"><span><code class="hljs language-xml"><span class="hljs-tag">&lt;<span class="hljs-name">Connector</span> <span class="hljs-attr">port</span>=<span class="hljs-string">"8443"</span> <span class="hljs-attr">protocol</span>=<span class="hljs-string">"HTTP/1.1"</span> <span class="hljs-attr">SSLEnabled</span>=<span class="hljs-string">"true"</span>
    <span class="hljs-attr">maxThreads</span>=<span class="hljs-string">"150"</span> <span class="hljs-attr">scheme</span>=<span class="hljs-string">"https"</span> <span class="hljs-attr">secure</span>=<span class="hljs-string">"true"</span>
    <span class="hljs-attr">clientAuth</span>=<span class="hljs-string">"false"</span> <span class="hljs-attr">sslProtocol</span>=<span class="hljs-string">"TLS"</span>
    <span class="hljs-attr">keystoreFile</span>=<span class="hljs-string">"C:\Keys\.keystore"</span>
    <span class="hljs-attr">keystorePass</span>=<span class="hljs-string">"changeit"</span> /&gt;</span></code></span></pre>


<h5 class="wp-block-heading">設定項目解説</h5>



<ul class="wp-block-list">
<li><code>port="8443"</code>：Tomcat標準HTTPSポート（標準HTTPSは443、443に変更する場合はポート占有と権限に注意）</li>



<li><code>keystoreFile</code>：作成した証明書ファイルのフルパス</li>



<li><code>keystorePass</code>：keytoolで設定したキーストアのパスワード</li>



<li><code>clientAuth="false"</code>：クライアント証明書不要（学習環境ではfalse固定）</li>
</ul>



<h4 class="wp-block-heading">動作確認方法</h4>



<p class="wp-block-paragraph">Tomcatを起動し、ブラウザからアクセス：<br><code>https://127.0.0.1:8443</code></p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">自己署名証明書はブラウザで「安全ではない」と警告されますが正常な動作です。本番環境では正式なCA証明書を購入してください。</p>
</blockquote>



<h3 class="wp-block-heading">CAS 5.0以上のインストール</h3>



<h5 class="wp-block-heading">1、リソースの取得</h5>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">CAS 5.0以降は従来の <code>war + Tomcat</code> 構成を廃止、SpringBootベースとなり<strong>単体実行Jarで外部Tomcat不要</strong></p>
</blockquote>



<ol class="wp-block-list">
<li>CASサーバー（Server）</li>
</ol>



<p class="wp-block-paragraph"><strong>CAS Initializr でデプロイパッケージをオンライン生成</strong><br>https://casinitializr.apereo.org</p>



<h5 class="wp-block-heading">2、CASサーバーデプロイ手順</h5>



<ol class="wp-block-list">
<li>CAS Initializrを開く</li>
</ol>



<ul class="wp-block-list">
<li>CASバージョン選択：<code>7.0.x</code>（最新安定版）</li>



<li>基本モジュールを選択：<code>Core / Web / SSL</code></li>



<li><code>cas.war</code> または単体実行用 <code>cas.jar</code> を生成・ダウンロード</li>
</ul>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">2種類のパッケージ形式から選択：</p>



<ul class="wp-block-list">
<li>モードA（推奨）：<strong>Standalone（単体Jar）</strong>、Tomcat内蔵ですぐ使用可能</li>



<li>モードB：従来のWarパッケージ、外部Tomcatへデプロイ（非推奨）</li>
</ul>
</blockquote>



<ol start="2" class="wp-block-list">
<li>【単体Jarモード】でデプロイ（主流な手法）<br>1）<code>cas.jar</code>をダウンロード<br>2）設定フォルダ <code>./etc/cas/config</code> を作成、<code>cas.properties</code> 設定ファイルを用意<br>3）起動コマンド（Java17以上必須）</li>
</ol>


<pre class="wp-block-code"><span><code class="hljs language-css"><span class="hljs-selector-tag">java</span> <span class="hljs-selector-tag">-jar</span> <span class="hljs-selector-tag">cas</span><span class="hljs-selector-class">.jar</span></code></span></pre>


<ol start="3" class="wp-block-list">
<li>ポートとHTTPSについて<br>内蔵Tomcatのデフォルトポート：<strong>8443（HTTPS）</strong><br>新バージョンも旧バージョン同様、HTTPSが強制されます。</li>
</ol>



<h5 class="wp-block-heading">3、アクセス先</h5>


<pre class="wp-block-code"><span><code class="hljs language-javascript">https:<span class="hljs-comment">//127.0.0.1:8443/cas</span></code></span></pre>


<p class="wp-block-paragraph">インストール</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.foxdevelop.com/ja/2026/08/06/%e3%82%a4%e3%83%b3%e3%82%b9%e3%83%88%e3%83%bc%e3%83%ab/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>紹介</title>
		<link>https://www.foxdevelop.com/ja/2026/08/06/%e7%b4%b9%e4%bb%8b/</link>
					<comments>https://www.foxdevelop.com/ja/2026/08/06/%e7%b4%b9%e4%bb%8b/#respond</comments>
		
		<dc:creator><![CDATA[jack]]></dc:creator>
		<pubDate>Thu, 06 Aug 2026 07:35:57 +0000</pubDate>
				<category><![CDATA[CAS チュートリアル]]></category>
		<guid isPermaLink="false">https://www.foxdevelop.com/?p=7790</guid>

					<description><![CDATA[概念 1. CAS CAS（Central Authenti ...]]></description>
										<content:encoded><![CDATA[
<h3 class="wp-block-heading">概念</h3>



<h4 class="wp-block-heading">1. CAS</h4>



<p class="wp-block-paragraph"><strong>CAS（Central Authentication Service、中央認証サービス）</strong><br>イェール大学が開発したオープンソースの<strong>Web SSO（シングルサインオン）</strong>実装フレームワークです。</p>



<h4 class="wp-block-heading">2. SSO（シングルサインオン）</h4>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">複数のWebシステムの本人確認を一つの拠点に集約して認証を行う仕組みです。</p>



<ul class="wp-block-list">
<li>特徴：各アプリケーションはHTTPSといったWebプロトコルで通信し、<strong>グローバルに唯一のログイン入口</strong>を持ちます</li>



<li>平易な説明：同一ブラウザで認証センターに1回ログインすれば、信頼済みの各サイトへは再ログイン不要でアクセスできます</li>
</ul>
</blockquote>



<h4 class="wp-block-heading">3. SSOシステムの3つの役割</h4>



<ol class="wp-block-list">
<li>User：エンドユーザー（ブラウザ）</li>



<li>Webアプリケーション（複数の業務システム）</li>



<li>SSO認証センター（唯一）</li>
</ol>



<h4 class="wp-block-heading">4. SSOの3つの核心原則</h4>



<ol class="wp-block-list">
<li>アカウントによるログイン処理はすべて<strong>SSO認証センターで実行</strong>する；</li>



<li>認証センターは各Webアプリケーションに対し、ユーザーが認証済みかどうかを通知する仕組みを提供する；</li>



<li>認証センターは全ての業務Webアプリケーションと事前に信頼関係を確立しておく。</li>
</ol>



<h5 class="wp-block-heading">二つの中核コンポーネント</h5>



<h4 class="wp-block-heading">CAS Server（認証サーバー側）</h4>



<ul class="wp-block-list">
<li>独立してデプロイされるWebプログラム、<strong>唯一の認証拠点</strong></li>



<li>役割：ID・パスワードを受け取りユーザー認証を実施；チケット(Ticket)の発行、グローバルセッションCookie(TGC)の管理</li>
</ul>



<h4 class="wp-block-heading">CAS Client（各業務システムに埋め込むクライアント）</h4>



<ul class="wp-block-list">
<li>各業務Webアプリケーション内部に配置、普通はFilterフィルターとして実装される</li>



<li>役割：保護対象リソースへのリクエストを遮断；未ログイン時はブラウザをCAS Serverのログイン画面へ自動的にリダイレクト</li>
</ul>



<h4 class="wp-block-heading">処理フロー</h4>



<ol class="wp-block-list">
<li><strong>ユーザーが業務システムのリソースにアクセス</strong> → CAS Clientがリクエストを捕捉し、<code>Service Ticket</code>が存在しないことを検知</li>



<li>Clientがブラウザを<strong>リダイレクト</strong>しCAS ServerのログインURLへ遷移、業務システムのアドレス(Service)を付与</li>



<li>ユーザーはCASサーバー上でID・パスワードを入力しログイン認証を完了
<ul class="wp-block-list">
<li>ログイン成功：CAS Serverがブラウザへ<strong>TGC（Ticket Granting Cookie）グローバルセッションCookie</strong>を書き込む</li>



<li>ワンタイムチケット<strong>Service Ticket（ST）</strong>を生成</li>
</ul>
</li>



<li>CAS Serverが再度ブラウザをリダイレクト、業務システムURLへ戻りURLパラメータに <code>Ticket=xxx</code> を付加</li>



<li><strong>業務システム側のCAS Clientがバックエンドからサーバー間リクエストを実行</strong>、ServiceアドレスとTicketを渡しCAS Serverにチケットの正当性を検証</li>



<li>CAS Serverがチケット有効を確認し、ユーザー名などの本人情報を返却</li>



<li>検証合格、業務システムがローカルセッションを作成しユーザーがページを閲覧可能になる</li>
</ol>



<p class="wp-block-paragraph"> <strong>TGCの役割</strong>：ブラウザにTGC Cookieが残っている限り、CAS連携済みの別システムにアクセスしてもログイン画面は表示されず、自動でシングルサインオンが実行されます。</p>



<p class="wp-block-paragraph">紹介</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.foxdevelop.com/ja/2026/08/06/%e7%b4%b9%e4%bb%8b/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
