[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[upki-fed:109] RE: [upki-fed:104] Re: [upki-fed:103] Re: IdP側での属性設定



山形大学の伊藤です。


> ついでに追加質問です。
> 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