5.8.2. Native アプリケーション (C#)¶
.NET(C#) による SAML 認証の実装方法を記載します。
大きく分けて、以下の4つの処理を実装します。
- SAML 認証結果を受け取るためのリスナーを作成
- SAML 認証開始 REST API の実行
- SAML 認証完了時の処理
- BaaS サーバへのログイン
リスナー登録¶
SAML 認証結果を受け取るための HTTP リスナーを作成します。
string redirectUri = "http://localhost:8080/receiveToken/";
// HTTPリスナー作成
HttpListener listener = new HttpListener();
listener.Prefixes.Clear();
listener.Prefixes.Add(redirectUri);
// リスナー開始
listener.Start();
SAML認証開始¶
ブラウザを起動して SAML 認証開始の REST API を実行します。
REST API の URI は、以下のとおりです。
{endpointUri}/1/{tenantId}/auth/saml/init?redirect={redirectUri}
以下にサンプルコードを示します。
string encodeUri = System.Web.HttpUtility.UrlEncode(redirectUri);
// ブラウザを起動して REST API 実行
System.Diagnostics.Process.Start(<EndpointUrl> + "/1/" + <tenantId> + "/auth/saml/init" + "?redirect=" + encodeUri);
SAML認証完了時の処理¶
SAML 認証が完了すると、指定したリダイレクト URI にリダイレクトされます。 リダイレクト URI は以下のようにワンタイムトークンがクエリパラメータに格納された形になります。
http://localhost:8080/receiveToken?token=123456789abcdef
リダイレクト URI からワンタイムトークンを取り出します。 以下にサンプルコードを示します。
// リクエスト待ち
HttpListenerContext context = listener.GetContext();
// リクエスト取得
HttpListenerRequest req = context.Request;
// リクエスト文字列取得
string reqStr = req.RawUrl;
// ワンタイムトークン取得
string onetimeToken = req.QueryString.Get("token");
BaaS サーバへのログイン¶
ワンタイムトークンを指定してログインします。
サーバからセッショントークンが払いだされ、以降は本セッショントークンで認証が行われます。 以下にサンプルコードを示します。
// ログイン用のパラメータ作成
var param = new NbUser.LoginParam() { Token = onetimeToken };
// ログイン
var user = await NbUser.LoginAsync(param, service);