山形大学の伊藤です。
> ついでに追加質問です。
> SP側に渡っている属性名・属性値をチェックするのに,
> どのようなSPを構築しておられますか?
> 私はApacheのmod_shibで,phpinfoで変数を見る方法を
> やってますが,これが一番気軽なんでしょうか。
今、山形大学でテストしているSPのチェック機能について説明します。
あくまで、テスト中ですので、今後、コードが変更になる可能性があります。
まず、SPの設定ファイルのattribute-policy.xmlで拒否することもできますが、
利用の利便性や各ページの機能調整を確保するために、SPの
アプリケーション内にチェックコードを埋め込んでいます。
サーバソフトがApacheではなく、IISなので、phpinfoは使っていませんが、
基本的は同じような動作になります。具体的には、Header情報を識別して、
チェックしています。
Headerのチェックは、クラスライブラリー(Shibboleth_tools)として構築して、
各Webページからこのクラスライブラリーにヘッダー情報を送り込み、チェック
情報をプロパティとして取得しています。
チェックについては、各Webページでチェック内容と、ライブリー側で行う場合の
2つの機能を組み合わせて機能しながら、動作させています。
サンプルコードを下記に添付します。サンプルコードが動作しているページは、
下記URLで属性の表示ページです。IISが原因なのかわかりませんが、
日本語属性が文字化けすることがあります
https://c.yz.yamagata-u.ac.jp/amenity/network/shibbolethUserInfo.aspx
以上。Phpでないので、お役に立てるかわかりませんが、現在開発中のSPの現状です。
○サンプルコード
Web pageでは、
Public Partial Class ShibbolethUserInfo
Inherits System.Web.UI.Page
Protected Shib1 As New Shibboleth_tools
・・・
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
Handles Me.Load
Shib1.Headers = Me.Request.Headers <- Header情報のクラスへの受け渡し
If Shib1.SHIB_SESSION_ID <> "" Then
.....
End If
--ここからShibboleth_toolsの内容の一部--
Imports System.IO
Imports System.Text
Imports System.Data.Odbc
Public Class Shibboleth_tools
Inherits xxxxx
Private Colls As New Specialized.NameValueCollection
Public Sub New()
Me.ObjectTitle = "Shibboleth Tools"
End Sub
Public Property Headers() As Specialized.NameValueCollection
Get
Return Colls
End Get
Set(ByVal value As Specialized.NameValueCollection)
Colls = value
End Set
End Property
Public Property EPPN() As String
Get
Return Me.ShibUTF8(Colls("eppn"))
End Get
Set(ByVal value As String)
End Set
End Property
Public Property .... As String
・・・
End Property
・・・
Private Function ShibUTF8(ByVal Buf As String) As String
If Buf <> "" Then
Dim tmp As Byte() = Encoding.GetEncoding(932).GetBytes(Buf)
Return Encoding.UTF8.GetString(tmp)
Else
Return Buf
End If
End Function
End Class
--ここまで--Attachment:
smime.p7s
Description: S/MIME cryptographic signature