/// <summary>Flush</summary> public override void Flush() { byte[] bb = TempBuffer.GetBuffer(); if (bb != null && bb.Length > 0) { // 書き換え処理 Encoding enc = Response.ContentEncoding; string content = enc.GetString(bb); // JSON形式なので、JsonConvertでaccess_tokenを抜き出す。 Dictionary <string, object> accessTokenResponse = JsonConvert.DeserializeObject <Dictionary <string, object> >(content); // access_tokenを if (accessTokenResponse.ContainsKey("access_token")) { string access_token = (string)accessTokenResponse["access_token"]; string id_token = OidcTokenEditor.ChangeToIdTokenFromAccessToken(access_token, "", HashClaimType.None); if (!string.IsNullOrEmpty(id_token)) { // responseにid_tokenとして、このJWTを追加する。 accessTokenResponse.Add("id_token", id_token); bb = enc.GetBytes(JsonConvert.SerializeObject(accessTokenResponse)); } } } ResponseStream.Write(bb, 0, bb.Length); ResponseStream.Flush(); }
/// <summary>Flush</summary> public override void Flush() { byte[] bb = TempBuffer.GetBuffer(); if (bb != null && bb.Length > 0) { // 書き換え処理 Encoding enc = Response.ContentEncoding; string content = enc.GetString(bb); // JSON形式なので、JsonConvertでaccess_tokenを抜き出す。 Dictionary <string, object> accessTokenResponse = JsonConvert.DeserializeObject <Dictionary <string, object> >(content); // access_tokenを if (accessTokenResponse.ContainsKey(OAuth2AndOIDCConst.AccessToken)) { string access_token = (string)accessTokenResponse[OAuth2AndOIDCConst.AccessToken]; string id_token = IdToken.ChangeToIdTokenFromAccessToken( access_token, "", "", HashClaimType.None, ASPNETIdentityConfig.OAuth2JWT_pfx, ASPNETIdentityConfig.OAuth2JWTPassword); if (!string.IsNullOrEmpty(id_token)) { // responseにid_tokenとして、このJWTを追加する。 accessTokenResponse.Add(OAuth2AndOIDCConst.IDToken, id_token); bb = enc.GetBytes(JsonConvert.SerializeObject(accessTokenResponse)); } } } ResponseStream.Write(bb, 0, bb.Length); ResponseStream.Flush(); }
/// <summary>Flush</summary> public override void Flush() { byte[] bb = TempBuffer.GetBuffer(); if (bb != null && bb.Length > 0) { // 書き換え処理 Encoding enc = Response.ContentEncoding; string content = enc.GetString(bb); // JSON形式なので、JsonConvertでaccess_tokenを抜き出す。 Dictionary <string, object> accessTokenResponse = JsonConvert.DeserializeObject <Dictionary <string, object> >(content); // refresh_tokenを削除 if (accessTokenResponse.ContainsKey(OAuth2AndOIDCConst.RefreshToken)) { accessTokenResponse.Remove(OAuth2AndOIDCConst.RefreshToken); bb = enc.GetBytes(JsonConvert.SerializeObject(accessTokenResponse)); } } ResponseStream.Write(bb, 0, bb.Length); ResponseStream.Flush(); }