| RSView32 Active Displayクライアント上で外部アプリケーションがユーザのセキュリティ情報にアクセスする方法 |
このテクニカルノートの情報は、以下に該当します:
| 製品: | RSView32 Active Display | タイプ: | アプリケーションノート |
| テクニカルノートID: | A1573JA | ||
| パッケージ/モジュール: | Server | 英文版作成日: | 2000/12/01 |
| リビジョン: | 6.20.63 6.30.16 | ||
| 修正リビジョン: | |||
| サブシステム: | Active Display Station ActiveX Security Utilities |
| テクニカルノート本文: |
背景:
RSView32 Active Display System Ver. 6.2では、Active DisplayグラフィックコンテナのAmbientプロパティにより、Active Displayクライアントにログインしているユーザのユーザ名およびセキュリティコードにアクセスできます。しかし、外部アプリケーションからこの情報にアクセスするには、グラフィックディスプレイにRSView32 UserName Label ActiveXコントロールを追加しなければなりません。
RSView32 UserName Label ActiveXコントロールは、Client Security Serverと共に使用します。Client Security Serverは、外部アプリケーションにセキュリティ情報を提供するCOMオートメーションサーバです。
RSView32 UserName Labelコントロールは、RSView32 Securityコントロールの一部です。このコントロールの概要およびインストール方法については、以下のサポート・ライブラリ・ドキュメントを参照してください。
A1415JA - RSView32 Active Display SystemのActiveXコントロール:ボタンへのRSView32セキュリティの追加、現在のユーザの表示
RSView32 UserName Label
Client Security Serverをアクティブにするには、RSView32 UserName Label ActiveXを以下のようにセットアップします。
- このコントロールは、Active Displayクライアントのグラフィックディスプレイに配置されていなければなりません。ディスプレイは、表示可能であるか、キャッシュされて更新中でなければなりません。1つの方法は、アボートしないディスプレイ(メインメニューまたはステータスバーとして機能するディスプレイなど)にコントロールを配置することです。または、RSView32 UserName Labelのみが表示されるディスプレイを作成して、/ZAパラメータを使用して、キャッシュされて常に更新されるように設定します。
- このコントロールのEnableSecurityProviderプロパティを"Enabled"にセットします。プロジェクトで複数のコントロールが使用されている場合、表示可能(またはキャッシュされて更新中の)コントロールは、このプロパティをセットしていなければなりません。これにより、Client Security Serverはセキュリティ情報にアクセスできます。
- このコントロールは、ログインユーザの変更時にトリガイベントによって通知されるように設定しなければなりません。(サポート・ライブラリ・ドキュメントA1415を参照してください。)
Client Security Server
RSView32 UserName Labelコントロールの"EnableSecurityProvider"プロパティが有効であり、このコントロールがディスプレイに表示されている場合、Client Security Serverはコントロールによって自動的に開始されます。また、外部アプリケーションがサーバ'のClientSecurityオブジェクトを作成すると、サーバが開始されます。これにより、Active Displayクライアントがアクティブでないときに、外部アプリケーションを開始して実行できます。
注記: Client Security Serverアプリケーションは、RSView32 Security Controlsと共にインストールおよび登録されるため、(自動的にダウンロードされた場合は)サーバとActive Displayクライアントの両方に存在します。Client Security Serverは、RSView32 Active Displayクライアント上で実行された場合にのみ、RSView32 UserName Labelコントロールによってアクティブになります。
Active Displayサーバ上のユーザのセキュリティ情報は、RSView32オブジェクトモデルを介して利用できるため、Active Displayサーバおよびクライアントの両方で実行するために作成された外部アプリケーションは、適切なセキュリティ情報ソース上で実行され、適切なセキュリティ情報ソースに接続されているかどうかを判断する必要があります。
オブジェクトインターフェイス
Client Security Serverには、SecurityProviderおよびClientSecurityという2つのオブジェクトが含まれます。SecurityProviderオブジェクトは、RSView32 UserName Labelコントロール用です。ClientSecurityオブジェクトは、外部アプリケーションがオブジェクト参照を作成するためのものです。
以下の例および参照は、Visual BasicアプリケーションからClient Security Serverにアクセスするためのものです。Client Security Serverを使用するには、Visual Basicアプリケーションは、プロジェクトのReferencesダイアログボックスでRSView32 Client Security Serverに参照する必要があります。
ClientSecurityオブジェクトに接続するためのコード例を以下に示します。
' Define in (Declarations) Section Dim oClientSecurity as CLSecSvr.ClientSecurity Sub ConnectToClient() Set oClientSecurity = New ClSecSvr.ClientSecurity ' Process information here ... ... Set oClientSecurity = Nothing End Sub
以下のオブジェクトダイアグラムは、サーバのプロパティ、メソッド、およびイベントを示します。
ClientSecurityオブジェクトのプロパティ
プロパティ | 読取り/書込み | 説明 |
ComputerName As String | R | ローカルコンピュータ名を返します。 (これは、Windowsのコンピュータ名です) |
ServerComputerName As String | R | Display Stationがディスプレイサーバとしてレポートするコンピュータ名を返します。これは、Windowsのコンピュータ名、DNS名およびIPアドレスです。これにより、VBアプリケーションは、接続されているセキュリティ・プロバイダ・ソース・サーバを識別できます。 |
ViewOnlyMode As Boolean | R | Active Display Stationが読取り専用モードに構成されているかどうかを示す値を返します。 |
ProviderConnected As Boolean | R | RSView32 UserName Labelが接続され、セキュリティ情報を提供しているかどうかを示す値を返します。Active Displayクライアントはクローズする際に、RSView32 UserName Labelをクローズして、このプロパティはFalseになります。 |
UserName as String | R | マシンにログインしているユーザの名前を返します。 |
UserCodes as String | R | 現在のユーザのセキュリティコードを返します。(例:"AB", "MNOP"など。ユーザにコードがない場合は空になります。) |
ClientSecurityオブジェクトのメソッド
メソッド | 説明 |
SecurityExecute( SecurityCodes as String, SuccessCommandString as String, [FailCommandString as String] ) | セキュリティチェックを実行して、SecurityCodesの文字列に、*または現在のユーザのRSView32セキュリティ・レベル・コード(A~P)が含まれる場合は、SuccessCommandStringのコマンド文字列を実行します。 ユーザが適切なセキュリティコードを持たない場合、オプションのFailedCommandStringパラメータが送信されます。 コマンド文字列の変換: 以下の文字列(大文字と小文字は区別しません)がコマンド文字列で発生すると、現在の値に変換されます。 {ComputerName} 現在のコンピュータ名。ComputerNameプロパティと同じです。 {RSViewUserName} 現在のユーザ名。UserNameプロパティと同じです。 注記: このメソッドは、ProviderConnectedプロパティがTRUEの場合にのみ有効です。 |
ClientSecurityオブジェクトのイベント
イベント | 説明 |
ProviderChanged ( ProviderConnected as Boolean) | プロバイダ接続が変更したときに発生するイベント。ProviderConnectedパラメータは、RSView32 UserName Labelの現在の状態を示します。Trueは、接続されていることを意味します。Falseは、接続が切断されていることを意味します。 |
UserChanged ( UserName as String, UserCodes as String) | UserNameが変更したときに発生するイベント。このイベントは、新しいユーザがログインしたときに発生します。UserNameは新しいユーザの名前であり、Usercodesは新しいユーザのセキュリティコード文字列です。 |
制限事項
- Client Security Serverは、1つのActive Displayクライアントウィンドウからの接続のみをサポートします。If RSView32 UserName Labelコントロールを含むActive Displayクライアントの他のインスタンスがClient Security Serverに接続しようとすると、以下のメッセージが表示されます。
Unable to connect to the Client Security Server.
Reason:
Error XXX
<description>
このダイアログボックスは、コントロールが最初に作成される際に表示されます。ダイアログボックスをクローズすると、再び表示されることはなく、そのActive DisplayクライアントのActiveXコントロールのオペレーションを妨げることはありません。Active Displayクライアントのそのインスタンスのセキュリティ情報は、Client Security Serverに送信されません。
- RSView32 UserName Labelがセキュリティ情報プロバイダとして構成され、Internet Explorerのブラウザに表示されるActive Displayクライアントのグラフィックでホストされている場合、Client Security ServerはコマンドをActive Displayクライアントに送信できず、SecurityExecuteメソッドは失敗します。
アプリケーション例
以下のVisual Basic 6アプリケーションには、Client Security Serverのプロパティおよびメソッドを接続および使用する方法を示すコードが含まれます。
DDEインターフェイス
Client Security Serverには、DDEインターフェイスも組込まれているため、コマンドをAcitve Displayクライアントに送信できます。また、このインターフェイスは、コマンド文字列で指定されている場合に、"{Computername}"および"{RSViewUserName}"の文字列の変換を提供します。このインターフェイスは、DDEExecuteというRSView32コマンドにより、"{Computername}"文字列を含むコマンドを変換するための、RadStationExecアプリケーションに代わる方法を提供します。
このインターフェイスがRADStationExecアプリケーションよりも優れている点は、Client Security Serverがメモリ内に既にロードされていて、Active Displayクライアントのコマンドインターフェイスへの接続を保持していることです。
DDEインターフェイスは、以下のとおりです。
Application name: CLSecSvr
Topic name: ClientCMD
DDEExecuteコマンドの構文は、以下のとおりです。
コマンド | パラメータ | 説明 |
SecurityExecute | SecurityCodes | SuccessCommandString [ | FailCommandString ] | セキュリティチェックを実行して、SecurityCodes文字列に*または現在のユーザのRSView32セキュリティ・レベル・コード(A~P)が含まれる場合は、SuccessCommandStringのコマンド文字列を実行します。 セキュリティコードが見つからない場合は、オプションのFailedCommandStringパラメータが送信されます。 注記:FailedCommandStringが使用される場合は、パラメータ間を縦棒(|)文字で区切ります。SuccessCommandStringとFailedCommandStringが縦棒文字で区切られていることを確認してください。 コマンド文字列の変換: 以下の文字列(大文字と小文字は区別しません)がコマンドで発生した場合、現在の値に変換されます。 {ComputerName} 現在のコンピュータ名 {RSViewUserName} 現在のユーザ名 |
Execute | CommandString | CommandStringのコマンド文字列を実行します。 以下の文字列(大文字と小文字は区別しません)がコマンドで発生した場合、現在の値に変換されます。 {ComputerName} 現在のコンピュータ名 {RSViewUserName} 現在のユーザ名 |
例
以下の例は、Computernameパラメータをディスプレイに渡すためのコマンドを実行する方法を示します。
DDEExecute CLSecSvr|ClientCMD Execute Display ProcessA1 /T{Computername}
以下の例は、コマンドがユーザのセキュリティを使用して、現在のユーザが正しいセキュリティレベルを持っている場合にメニューを表示するか、またはユーザがセキュリティを持っていない場合に警告ダイアログを表示するかを決定する方法を示します。
DDEExecute CLSecSvr|ClientCMD SecurityExecute ABC | Display ProcessMenu | Display InvalidSecurity
以下の例は、Remarkを使用して、イベントの発生をクライアントに表示する方法を示します。
DDEExecute CLSecSvr|ClientCMD Execute Remark User {RSViewUsername} Opened valve A1 from {Computername}
DDEインターフェイスの使用に関するヒント
- DDEExecuteコマンドを使用する場合は、ClSecSvr, 縦棒(|)文字、およびClientCMD文字列の間にスペースがないことを確認してください。
- DEFINEコマンドを使用して、DDEExecuteコマンドをClient Security Serverに発行するための表示を短くすると便利です。このコマンドは、Active Displayクライアントのスタートアップマクロに配置されます。Defineコマンドの使用例を以下に示します。
Define CLDDE DDEExecute CLSecSvr|ClientCMD
Defineコマンドにより、Client Security Server用のDDEExecuteコマンドが使用される際に、短い表記方法を使用できます。Defineコマンドの使用方法は、RSView32ヘルプを参照してください。
短い表記方法の例: CLDDE SecurityExecute A | SuccessMacro | FailMacro
CLDDE Execute MyMacro - ExecuteおよびSecurityExecuteコマンドに対してコマンド文字列を1つだけ指定できます。RSView32は、コマンド文字列で使用されるセミコロンを別のコマンドとして識別するため、DDEExecuteコマンド文字列が正しく処理されません。複数のコマンドを実行するには、コマンドをマクロに入れて、マクロを呼出します。
例えば、"DDEExecute CLSecSvr|ClientCMD SecurityExecute A|Macro1; Macro2|Macro3"というコマンドは、"DDEExecute CLSecSvr|ClientCMD SecurityExecute A|Macro1"および"Macro2|Macro3"を実行するコマンドに置換されます。これは、意図したコマンドではありません。 - DDEコマンドが間違っていたり、Client Security Serverアプリケーションがアクティブでない場合、RSView32はエラーのログを中止して、指定されたコマンドは実行されません。
- コマンドが発行される際に、PassまたはFailコードは返されません。失敗したコマンドは、コマンドがどこで実行されているかによって、クライアントまたはサーバプロジェクトのアクティビティログに格納されます。
- 通常はActive Displayクライアントが終了したことによりRSView32 UserName LabelコントロールがClient Security Serverとの接続を切断すると、DDEインターフェイスは機能しなくなり、エラーメッセージは生成されません。
- RSView32 UserName Labelがセキュリティ情報プロバイダとして構成され、Internet Explorerのブラウザに表示されるActive Displayクライアントのグラフィックでホストされている場合、Client Security ServerはコマンドをActive Displayクライアントに送信できず、DDEインターフェイスはどのコマンドに対しても機能しません。
法的な注意事項: |
ロックウェル・ソフトウェア(RSI) のKnowledgebaseに記載された情報は、いかなる保証もなく「そのままで」提供されます。RSI は、明示または暗示されたいかなる保証も負いません。また、RSI がそのような損害の可能性を忠告していた場合でも、直接、間接、偶発的、必然的な利益の損失または損害を含むいかなる損害についても、RSI は責任を負いません。
©2000 Rockwell Software Inc. All rights reserved.
