私はコメントとして投稿したいと思いましたが、コメントを書くには50の評判が必要です。
私たちは、IdPとSPとしてSSOにsimplesamlphpを使用しています。 IdPはUTF-8値を持つcn、givenNameおよびsnをLDAPから受け取ります。ログイン名/ユーザー名はus-asciiのみです。
ユーザがSonarに来た場合、us-ascii以外の文字は間違っています - utf-8からutf-8に変換されました。すでにutf-8になっています。
PHPでUTF-8でページを送信するIDPの属性を使用すると、文字は正しいです。
私は今、1回のテストを行いました。私たちのApache Configでは、SPがIdPから得るものを、X-Forwarded-NameにMCAC_ATTR_CN属性を設定します。元の構成は次のとおりです。
RequestHeader set X-Forwarded-Name "expr=%{reqenv:MCAC_ATTR_CN}"
は今、私はUTF-8で固定文字列を追加しました:
RequestHeader set X-Forwarded-Name "expr=%{reqenv:MCAC_ATTR_CN} cäëöüc"
「C」の文字より良いエンコードされたテキストを見る唯一の区切りです。
この設定行のhexdumpに対しては、次のとおりです。
0000750: 09 0909 5265 7175 6573 7448 6561 ...RequestHea
0000760: 6465 7220 7365 7420 582d 466f 7277 6172 der set X-Forwar
0000770: 6465 642d 4e61 6d65 2022 6578 7072 3d25 ded-Name "expr=%
0000780: 7b72 6571 656e 763a 4d43 4143 5f41 5454 {reqenv:MCAC_ATT
0000790: 525f 434e 7d20 63c3 a4c3 abc3 b6c3 bc63 R_CN} c........c
00007a0: 220a ".
あなたが見ることができるように、そこに固定されているUTF-8文字 "A" c3a4 "E" c3ab "ö" c3b6 "ü" c3bc。LDAPから
follwing名来る:Apacheの設定では
xxxxxx xxxxx xxxx äëüö
は、したがって、結果の名前があるべき、 "cäëöüc" を追加します
xxxxxx xxxxx xxxx äëüö cäëöüc
しかし、ソナーでは、名前が
として表示されます
xxxxxx xxxxx xxxx äëüö cäëöüc
次のテキストを変換すると、同様の結果になります。
ISO-8859-1からUTF-8へ
xxxxxx xxxxx xxxx äëüö cäëöüc
:
echo "xxxxxx xxxxx xxxx äëüö cäëöüc" | iconv -f iso-8859-2 -t utf-8
xxxxxx xxxxx xxxx äÍßÜ cäÍÜßc
"ユーロ" の文字がUTF-8文字C2はA4である:私はループバック上でtcpdumpを行った
00000000: c2a4 0a ...
apacheプロキシモジュールからsonarqubeへの通信を取得するには、正しいUTF-8文字を確認することができます。c3a4 c3ab c3bc c3b6 IdPから来て、次にcの間にc3a4 c3ab c3b6 c3bcがApacheから直接来るのを見ることができます。
00000000 47 45 54 20 2f 61 63 63 6f 75 6e 74 20 48 54 54 GET /acc ount HTT
...
00000390 58 2d 46 6f 72 77 61 72 64 65 64 2d 4e 61 6d 65 X-Forwar ded-Name
000003A0 3a 20 72 6f 62 65 72 74 20 74 65 73 74 32 20 77 : xxxxxx xxxxx x
000003B0 6f 6c 66 20 c3 a4 c3 ab c3 bc c3 b6 20 63 c3 a4 xxx .... .... c..
000003C0 c3 ab c3 b6 c3 bc 63 0d 0a ......c. .
...
この場合、システムのロケールはen_US.UTF-8に設定されています。
So Sonarは実際にApache(直接設定またはIdP)からUTF-8テキストを取得しますが、おそらくこのutf-8テキストをutf-8のiso-8859テキストと同じように変換してしまい、ナンセンスになります。
あなたは今考えていますか?これはソナーやラッパー、あるいはどこかのオプションが正しく設定されていないのでしょうか?
ありがとう、
Robert。
なぜSonarQubeにLatin1/ISO-8859が必要ですか? UTF-8はあらゆる場所で使用されるべきエンコーディングです。 –
こんにちは@ JulienL.-SonarSourceTeam LDAP/SSOによって送信されたユーザー名は、実際にはUTF-8であってもSonarQubeがLatin1/ISO-8859でエンコードされているように見えるためです。 – ABA
これで調べて、あなたに戻ってきます –