サーバー管理ポータルサイト、およびForguncy Server上で動作しているすべてのアプリケーションに対して有効となるセキュリティ設定を行うことができます。
次の2つの設定は、Forguncy Server上で動作しているすべてのアプリケーションに対して有効となります。
本設定はグローバル設定(「GlobalConfig.xml」ファイル)におけるGlobalConfiguration要素の直下に記述したAllowUrlReferrer要素による設定と同様です。ここで設定した内容は「GlobalConfig.xml」ファイルに反映されます。
HTTPリファラを確認し、指定されたURLがHTTPリファラに記述されたHTTPリクエストのPOSTメソッドにのみ応答を返すようにする設定です。実際の運用に合わせて、許可するURLを設定します。複数のURLを設定する場合、改行で区切って記述します。「*(アスタリスク)」はワイルドカード文字となっており、1 文字以上の任意の文字列となります。なお、本設定値の文字として"+ ( ) [ ] { } $ \ | ^"は使用できません。
本設定はグローバル設定(「GlobalConfig.xml」ファイル)におけるGlobalConfiguration要素の直下に記述したAllowUrlReferrer要素による設定と同様です。ここで設定した内容は「GlobalConfig.xml」ファイルに反映されます。
HTTPレスポンスヘッダーの設定の設定を行います。複数行の設定も可能です。ここでの設定はサイト内のすべてのHTTPリクエストに適用されます。
本設定はグローバル設定(「GlobalConfig.xml」ファイル)におけるGlobalConfiguration要素の直下に記述したXFrameOptions要素による設定と同様です。ここで設定した内容は「GlobalConfig.xml」ファイルに反映されます。
Forguncy ServerからのHTTP応答ヘッダーに「X-Frame-Options」を追加する設定です。本設定では、「DENY」、「SAMEORIGIN」、「ALLOW-FROM」のいずれかを選択可能です。「ALLOW-FROM」を選択した場合、フレーム内(<iframe>要素など)に本Forguncyアプリケーションを表示することを許可したいWebサイトのURLを指定します。改行で区切ることで複数のURLを指定できます。
本設定値の詳細については、X-Frame-Options - HTTP | MDN等の情報を参照してください。本設定はWebブラウザーの種類やバージョンにより対応状況が異なります。
次の2つの設定は、サーバー管理ポータルサイトに対してのみ有効となります。
本設定はグローバル設定(「GlobalConfig.xml」ファイル)におけるUserService要素内に記述したAllowUrlReferrer要素による設定と同様です。ここで設定した内容は「GlobalConfig.xml」ファイルに反映されます。
HTTPリファラを確認し、指定されたURLがHTTPリファラに記述されたHTTPリクエストのPOSTメソッドにのみ応答を返すようにする設定です。実際の運用に合わせて、許可するURLを設定します。複数のURLを設定する場合、改行で区切って記述します。「*(アスタリスク)」はワイルドカード文字となっており、1 文字以上の任意の文字列となります。なお、本設定値の文字として"+ ( ) [ ] { } $ \ | ^"は使用できません。
本設定はグローバル設定(「GlobalConfig.xml」ファイル)におけるUserService要素内に記述したAllowUrlReferrer要素による設定と同様です。ここで設定した内容は「GlobalConfig.xml」ファイルに反映されます。
HTTPレスポンスヘッダーの設定の設定を行います。複数行の設定も可能です。ここでの設定はサイト内のすべてのHTTPリクエストに適用されます。
本設定はグローバル設定(「GlobalConfig.xml」ファイル)におけるUserService要素内に記述したAllowUrlReferrer要素による設定と同様です。ここで設定した内容は「GlobalConfig.xml」ファイルに反映されます。
Forguncy ServerからのHTTP応答ヘッダーに「X-Frame-Options」を追加する設定です。本設定では、「DENY」、「SAMEORIGIN」、「ALLOW-FROM」のいずれかを選択可能です。「ALLOW-FROM」を選択した場合、フレーム内(<iframe>要素など)に本Forguncyアプリケーションを表示することを許可したいWebサイトのURLを指定します。改行で区切ることで複数のURLを指定できます。
本設定値の詳細については、X-Frame-Options - HTTP | MDN等の情報を参照してください。本設定はWebブラウザーの種類やバージョンにより対応状況が異なります。
サーバー管理ポータルへのアクセスにSSL暗号化通信を使用する場合、本設定を有効化します。なお、本設定を有効化する前に、22345番ポートに対してSSL証明書の登録を行う必要があります。
22345番ポートへのSSL証明書の登録を解除する場合、先に本設定を無効に設定した後に登録の解除を行う必要があります。先に22345番ポートへのSSL証明書の登録を解除してしまった場合、サーバー管理ポータルへアクセスできなくなります。その場合には、GlobalConfig.xmlファイルのEnableUserServiceSSLを「false」に設定し、Forguncy Serverのサービスを再起動してください。
IPアドレスにドメイン名を割り当て、ユーザーはそのドメイン名を使ってForguncy Serverにアクセスしているような場合、Forguncy Serverはそのドメイン名を知ることができません。このような場合、本設定において実際にユーザーが使用しているドメイン名を設定することで、Forguncyはそのドメイン名をいくつかの機能において使用します。
本設定で設定するドメイン名は、サーバー管理ポータルに対して設定されます。各アプリケーションに対してドメイン名を設定したい場合には、全般設定(サーバー管理ポータル)を参照してください。
なお、ドメイン名には「https://www.example.com:22345」のように、必ず22345番ポートを指定する必要があります。サーバー管理ポータルは22345番ポート以外でのアクセスには対応していません。
チェックすると、自動ログアウトされるまでの時間を設定できます。
設定した時間内にサーバー管理ポータルの操作をしなかった場合、ユーザーは自動的にログアウトされた状態となります。 既定値は1440分で、2~1440の範囲で設定できます。
リクエストする際に、OAuth2.0アクセストークンをAuthorization Headerに追加することで、匿名でないサーバーサイドコマンド、およびユーザーアカウント管理REST APIにForguncy Serverの外側からアクセスすることができます。
クライアント名 | クライアントの表示名です。 |
クライアントID | クライアントの一意になるIDです。 |
クライアントシークレット | クライアントシークレットを設定します。 |
グラント種別 | グラント種別を指定します。password、client_credentials、または password、client_credentialsを同時に指定する方法があります。 |
許可するスコープ | アクセスできるAPIスコープを設定します。カンマで複数スコープを区切っています。 現在、「FGC_UserApis」を使用して、ユーザーの新規などのユーザー管理に関連するAPIにアクセスすることをサポートします。また、アプリケーション名を許可するスコープとして、アプリケーション内のサーバーサイドコマンドにアクセスすることをサポートします。全てのアプリケーションのサーバーサイドコマンドにアクセスしたい場合は、許可するスコープを「FGC_AllAppsServerCommands」に設定します。スコープは大文字と小文字を区別することに注意してください。 |
アクセストークンの有効期限 | アクセストークンの有効期間です。(秒単位)(デフォルトは7200秒)0〜99,999,999の整数に設定できます。リフレッシュトークンのサポート:既定ではチェックされません。チェックされている場合、 offline_accessのAPIスコープがデフォルトで拡大されます。 client_credentialsグラント種別は、リフレッシュトークンをサポートしていません。 |
有効 | チェックされている場合、クライアントが有効状態になります。 |
動作確認
実際にサーバー管理ポータルのUser APIであるユーザーアカウント管理 REST APIを利用した動作確認を行います。
OAuthの仕組みを利用しているため、まずはサーバーからアクセストークンを取得する必要があります。
※Forguncy Serverでは認可サーバーとリソースサーバーの役割を担っているためリクエストを送信する先は変わりません。
次のコードでは、アクセストークンを取得しています。
※アクセストークンの有効期限にご注意ください。今回はアクセストークンを取得するコードとAPIを実行するコードを分けて実行しています。実行する間隔が有効期限を超えてしまった場合、エラーが発生します。
C# |
コードのコピー |
---|---|
var client = new HttpClient(); var disco = await client.GetDiscoveryDocumentAsync(new DiscoveryDocumentRequest { Address = "http://example.com:22345/UserService/", Policy = { RequireHttps = false, ValidateIssuerName = false, ValidateEndpoints = false } }); if (disco.IsError) { throw new Exception(disco.Error); } // アクセストークンをリクエスト var tokenResponse = await client.RequestClientCredentialsTokenAsync(new ClientCredentialsTokenRequest() { Address = disco.TokenEndpoint, ClientId = "f3c8eb1d523904f33396027bb7618722", // クライアントID ClientSecret = "191f6cc9b163ce617c61bd655d01e125", // クライアントシークレット Scope = "FGC_UserAPIs" // 許可するスコープ }); Console.WriteLine(tokenResponse.Json); |
実行結果
次のコードは、AddUsersを利用してユーザーを追加しています。
C# |
コードのコピー |
---|---|
var client = new HttpClient(); // 前回のコードで取得したアクセストークン client.SetBearerToken("eyJhbGciOiJSUzI1NiIsImtpZCI6IjVCREMxRTM0RDRDNkM4RjgzMzUwNUU4NTYyNzM5MEVDIiwidHlwIjoiYXQrand0In0.eyJuYmYiOjE2NjA2MzE2MDIsImV4cCI6MTY2MDYzODgwMiwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDoyMjM0NS91c2Vyc2VydmljZSIsImF1ZCI6IkZHQ19Vc2VyQVBJcyIsImNsaWVudF9pZCI6ImQ5NzdlOWUxNTEzOTZmYTcyYmNjNjU5MDUzNjc0NjBkIiwianRpIjoiNzVERjQ0QUNEOEVDQjZENDQ2RTFBMTNBMkVEQzdFRTQiLCJpYXQiOjE2NjA2MzE2MDIsInNjb3BlIjpbIkZHQ19Vc2VyQVBJcyJdfQ.P2cL3_GpOEpQKOx3-eyRhAfjBL9ALcTCJ2BNezppmHkNcLBhro8akqka-wZGaH5xT20JWboUFvMpQn9lLIYEYBjEgt4kJhKbGTVUcILle3mdBovexjIujGsLMDJg6aJdDXeamhpWLzhFQ3kcCa_f8bsTs6HyNwp6iqFZ0jAmSzVlWRMT1BT6XTPONJ_y_l9r2nnN2CeFisoWIoeTNg_xUug8wo7fH7gCryIfSjyYpdrjsfcJTf6TG3TEVkCQW0DPtJXu5bQU0iB5NIXT_iOlriBivRTB4bdxvSAbkGxxZnkua3YEFAKynHCDnLJgUvL0hHdTljm3dD3qT9FYrf4IJA"); var param = new UserInfosParam() { UserInfos = new List() { new UserInfo() { UserName = "テストユーザー名", FullName = "テストユーザー氏名", Password = "123456", Email = "testuser@email.com" } } }; var response = await client.PostAsync("http://example.com:22345/UserService/Manager/User/AddUsers", new StringContent(Newtonsoft.Json.JsonConvert.SerializeObject(param), Encoding.UTF8, "application/json")); Console.WriteLine((int)response.StatusCode); Console.WriteLine(response.StatusCode); |
実行結果
新たなユーザーが追加されたことが確認できます。