AF SDKを用いたPIサーバーへの認証について

PIPoint.FindPIPoints関数を使用してタグの検索を行うために、PIServerオブジェクトの生成と接続が必要みたいなのですが

NetworkCredentialを使用して接続しようとすると『Cannot connect to the PI Data Archive.』のエラーが発生してしまい、

NetworkCredentialを使用しない場合は接続出来てしまいます。

 

PIServerオブジェクトの接続にはどのような情報が必要なのでしょうか?

また、PIServer.ConnectはData Archiveへの接続との認識で宜しいでしょうか?

 

                //アクセス情報を作成

                NetworkCredential loginInfo = new NetworkCredential();

 

                loginInfo.UserName =  "TestUser";

 

                loginInfo.Password = "TestPassword";

 

                loginInfo.Domain = "TestServer";

 

                //Data Archiveオブジェクトを作成

 

                PIServers myPIservers = new PIServers();

 

                m_piServer = myPIservers["TestServer"];

 

                m_piServer.Connect(loginInfo);
Parents
  • Hello Akira Nagahama,

     

    It looks you are trying to connect using explicit logon. I think this related post could be of some help:

     

    Can you connect to a PI Server using AF SDK using PI Credentials?
  • 確認するために、Windows認証経由でTestUserというユーザーを使い、PI Data Archiveに接続をしようとしていますでしょうか。または、Kristianと言いたようにExplicit Loginをしようとしていますでしょうか?

     

    Windows認証経由で接続する場合は、下記のように出来ます。

     

    PIServer local = new PIServers()["dataserver"];
    NetworkCredential loginInfo = new NetworkCredential("user", "password", "domain");
    local.Connect(loginInfo, PIAuthenticationMode.WindowsAuthentication);
    

     

    Connectの関数を使いPI DataArchiveに、接続する時にPI User認証とWindows認証の2つの認証があります。 Windows認証を使いたい場合は、PIAuthenticationModeのパラメーターが必要です。

     

    更に、Connect(NetworkCredential credential, AFConnectionPreference preference)の関数の内部の実装にIWin32Windowのオブジェクトを使うので、このConnectの関数を使うため、System.Windows.Formsの参照の追加が必要です。

Reply
  • 確認するために、Windows認証経由でTestUserというユーザーを使い、PI Data Archiveに接続をしようとしていますでしょうか。または、Kristianと言いたようにExplicit Loginをしようとしていますでしょうか?

     

    Windows認証経由で接続する場合は、下記のように出来ます。

     

    PIServer local = new PIServers()["dataserver"];
    NetworkCredential loginInfo = new NetworkCredential("user", "password", "domain");
    local.Connect(loginInfo, PIAuthenticationMode.WindowsAuthentication);
    

     

    Connectの関数を使いPI DataArchiveに、接続する時にPI User認証とWindows認証の2つの認証があります。 Windows認証を使いたい場合は、PIAuthenticationModeのパラメーターが必要です。

     

    更に、Connect(NetworkCredential credential, AFConnectionPreference preference)の関数の内部の実装にIWin32Windowのオブジェクトを使うので、このConnectの関数を使うため、System.Windows.Formsの参照の追加が必要です。

Children
  • ご返答ありがとうございます。

     

    特定のWindowsアカウントでサーバーにログインしてPI System Managemrnt Toolsを操作していたので、Windows認証経由で接続テストを行っていました。

    以下の手順でユーザーを作成し、教えて頂いた接続方法にて接続をすることが出来ました。

    ①Windowsアカウント[TestUser]を作成

    ②PI System Managemrnt ToolsでPI Usersに作成した[TestUser]を追加

    ③続けてMappingにてWindowsアカウント[TestUser]とPI Identity[TestUser]を紐付けて追加

    ④AF SDKでお教え頂いたWindows認証でのConnectで接続を確認

     

    もう1つの認証方法、PI User認証と言うのはKristian Haner様が教えて頂いたような、Windowsアカウントとして存在しない

    PI Usersにいる[pidemo]等の情報を用いて認証が可能と言う事でしょうか?

  • Windows認証がある前にPI User認証がありました。今でも使えますが、PI User認証はPI Data Archiveに接続の認証方法の中に一番弱いので、使わないほうが良いです。

     

    認証のセキュリティーのランキングについて、下記の資料があります。(英)

    https://livelibrary.osisoft.com/LiveLibrary/content/en/server-v7/GUID-2CCF8F09-4E40-4543-AB7A-454121803506