๋ด๊ฐ ์ค์ ํ ๊ตฌ์ฑ ํ์ผ์์ hostname
๋ฐ transport.https.properties
๋ deployment.toml ํ์ผ์ ์์ต๋๋ค.
์๋ ๋ฌธ์์ ์ ํํ ๊ฐ์ Nginx๋ฅผ ๊ตฌ์ฑํ์ต๋๋ค.
์ฌ๊ธฐ
ํ์ง๋ง ์๋ํ์ง ์์ต๋๋ค. ๋ฌธ์ ๋ ๊ฒ์์ ํฌํธ์ ์ด๋ ค๊ณ ์๋ํ ๋ ๋ก๊ทธ์ธ์ ์์ฒญํ๊ณ ๋ก๊ทธ์ธํ ํ ์ฌ๋ฐ๋ฅธ ์ฌ์ฉ์ ์ด๋ฆ๊ณผ ๋น๋ฐ๋ฒํธ๋ก ์ด URL์ ๊ฒ์ฌํ ์ ์๋ค๋ ๊ฒ์
๋๋ค. HTTP-500 ์ค๋ฅ๊ฐ ์์ ๋๋ฏ๋ก ๋ก๊ทธ์ธ ํ์ด์ง๋ก ๋ฆฌ๋๋ ์
๋ฉ๋๋ค. ๋ก๊ทธ์ธํ๋ฉด API ํ์ด์ง๋ก ๋ฆฌ๋๋ ์
๋๊ณ ๋ด๋ถ ๊ฒ์ฌ๋ฅผ ํ ์ ์๊ธฐ ๋๋ฌธ์ ๋ก๊ทธ์ธ ํ์ด์ง๋ก ๋ฆฌ๋๋ ์
๋๋ฉฐ ์ด ๋ฃจํ๋ ์์ํ ๊ณ์๋ฉ๋๋ค!
๋ด๊ฐ ๋ฌด์์ ๋์น๊ณ ์์ผ๋ฉฐ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์ด๋ป๊ฒ ๊ตฌ์ฑํ ์ ์๋์ง ์๊ณ ์ถ์์ต๋๋ค.
์ฌ๊ธฐ ๋น์ทํ ๋ฌธ์ ๊ฐ ์์ต๋๋ค
์๋
ํ์ธ์ @amir-dh,
์์ ์ญ๋ฐฉํฅ ํ๋ก์๋ฅผ ํ์ฑํํด ์ฃผ์๊ฒ ์ต๋๊น?
wso2am3.0.0/repository/deployment/server/jaggeryapps/publisher/site/public/theme/ defaultTheme.js
์์ REVERSE_PROXY = {
ํ์ฑํ๋จ: ์ฌ์ค,
์ถ์ฒ: 'api.am.wso2.com',
};
@isharac
๋ฆฌ๋ฒ์ค ํ๋ก์๋ฅผ ์ค์ ํ์ต๋๋ค
์์ REVERSE_PROXY = {
ํ์ฑํ๋จ: ์ฌ์ค,
์ถ์ฒ: ' ๋ง์ด๋๋ฉ์ธ ',
};
๊ทธ๋ฌ๋ ๋ค์ ์๋ํ์ง ์์ต๋๋ค. ๊ฒ์์ ํฌํธ์ ์ด๋ฉด invalid_callback
์ค๋ฅ๊ฐ ํ์๋ฉ๋๋ค.
@amir-dh,
๊ทธ์ ๋ฐ๋ผ ์ฝ๋ฐฑ URL์ ์
๋ฐ์ดํธํด์ผ ํฉ๋๋ค.
๋
๋ฆฝ ์คํํ ๋ฐฐํฌ์
๋๊น?
์ฐ๋ฆฌ๋ ์ด๋ฏธ NGINX ์์ ์์ ๋ฌธ์ ๋ฅผ ์๋ณํ์ง๋ง ๋
๋ฆฝ ์คํํ ๋ฐฐํฌ์ธ ๊ฒฝ์ฐ ์ฝ๋ฐฑ URL์ ๋ณ๊ฒฝํด์ผ ํฉ๋๋ค.
๋ด ๋ธ๋ก๊ทธ[1]๋ฅผ ์ฐธ์กฐํ๊ณ ํธ์คํธ ์ด๋ฆ์ ๋ฐ๋ผ admin_publisher ๋ฐ admin_store SP ์ ํ๋ฆฌ์ผ์ด์
์ ์ฝ๋ฐฑ URL์ ๋ณ๊ฒฝํ์ญ์์ค.
๋ถํธ์ ๋๋ ค ์ฃ์กํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ฐ๋ฆฌ ๋ฌธ์๋ WIP์ ์์ต๋๋ค. ๊ณง ๋ฌธ์๋ฅผ ์ ๋ฐ์ดํธํ๊ฒ ์ต๋๋ค.
[1] https://ishara-cooray.blogspot.com/2019/11/how-to-change-devportal-to-different.html
@isharac
์ฝ๋ฐฑ URL์ ์
๋ฐ์ดํธํ์ง๋ง ์๋ํ์ง ์์ต๋๋ค.
๊ทธ ํ์ ๋ก์ปฌ ํธ์คํธ์์ Nginx ๋ฐ ApiM 3.0์ ์คํํ๊ณ ์ญ๋ฐฉํฅ ํ๋ก์๋ฅผ ํ์ฑํํ๊ณ ์ฝ๋ฐฑ URL์ ์
๋ฐ์ดํธํฉ๋๋ค. ๋๋ฉ์ธ์ด ์ค์ ๋ ๊ฒ์์ ํฌํธ์ด ์๋ํฉ๋๋ค.
๊ทธ๋ฌ๋ ์ํ API๋ฅผ ๋ฐฐํฌํ๊ณ "devportal์์ ๋ณด๊ธฐ" ๋๋ "๋ก๊ทธ์ธ"์ ํด๋ฆญํ๋ฉด ํ์ด์ง URL์ localhost:9443
์
๋๋ค.
@amir-dh
deployment.toml์์ devportal URL์ ๊ตฌ์ฑํด์ผ ํฉ๋๋ค.
๊ทธ๋ ๊ฒํ๋ ค๋ฉด ์๋ ๊ตฌ์ฑ์ ํ์ฑํํ์ญ์์ค.
#์ ์ ๊ฑฐํ์ฌ ํ์ฑํํ ์ ์์ต๋๋ค.
@isharac
๋๋ ๋ค์ ์ค์ ๊ตฌ์ฑํ์ต๋๋ค.
[apim.devportal]
url = " https://MyDomain/devportal "
์ญ๋ฐฉํฅ ํ๋ก์๋ฅผ ์ค์ ํฉ๋๋ค.
์์ REVERSE_PROXY = {
ํ์ฑํ๋จ: ์ฌ์ค,
์ถ์ฒ: '๋ด ๋๋ฉ์ธ',
};
๊ทธ๋ฌ๋ ๋ก๊ทธ์ธ ๋ฐ ๋ก๊ทธ์์ ํ์ด์ง URL์ localhost
์
๋๋ค. ๊ฒ์์ ๋ฐ devportal์์
@amir-dh
url์ ํฌํจํ์ฌ ์ ํ์ด์ง์ ์คํฌ๋ฆฐ์ท์ ์ฒจ๋ถํด ์ฃผ์๊ฒ ์ต๋๊น?
๋ํ devportal SP(admin_admin_store)์ ์ฝ๋ฐฑ URL?
@isharac
๋ก๊ทธ์ธ ํ์ด์ง์์ MyDomain์ " localhost:9443 "์ผ๋ก ๋ฐ๊พธ
ํ์ง๋ง ์ฝ๋ฐฑ URL admin_admin_store
์
๋ฐ์ดํธํ๊ณ ๋ก๊ทธ์ธ ํ์ด์ง๋ก ์ด๋ํ๋ฉด invalid_callback ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
๋๋ mir-dh ์ ๊ฐ์ ๋ฌธ์ ๊ฐ ์์ต๋๋ค
api-manager.xml์ ์๋์ผ๋ก ํธ์งํ์ฌ ์ฌ๋ฐ๋ฅธ URL์ ์ค์ ํ๊ณ ์๋ฒ๊ฐ ์์๋๋ฉด ๋ฎ์ด์ฐ์ง ์๋๋ก ํ๋ ๋ฐฉ๋ฒ์ด ์์ต๋๊น?
๋ฌธ์ ์ธ์ฌ,
์ผ๋ณธ
@amir-dh
์คํฌ๋ฆฐ์ท ๊ฐ์ฌํฉ๋๋ค.
ํฌํธ ์คํ์
2๋ ์ฌ์ฉํ๊ณ ์๋ ๊ฒ ๊ฐ์ต๋๋ค.
๊ณต์ ๋ถํ๋๋ ค๋ ๋ ๊น์
์ญ๋ฐฉํฅ ํ๋ก์ ๊ตฌ์ฑ?
ํํธ, ๋๋ ํธ์คํธ ์ด๋ฆ์ ๋ณ๊ฒฝํ์ฌ ์๋ํ๊ณ Nginx๋ก ์์ํ์ต๋๋ค.
๋ด๊ฐ ์ํํ ๋จ๊ณ๋ ๋ธ๋ก๊ทธ [1]์ ๋ฌธ์ํ๋์ด ์์ต๋๋ค.
๊ทธ๊ฒ์ด ๋น์ ์ ์ํด ์๋ํ์ง ์๋ ๊ฒฝ์ฐ ์ ํฌ์๊ฒ ์๋ ค์ฃผ์ญ์์ค.
@JUANPARBELAEZ
๊ฐ์ ๋ธ๋ก๊ทธ[1]์์ ๋จ๊ณ๋ฅผ ํ์ธํ๊ณ ํผ๋๋ฐฑ์ ์๋ ค์ฃผ์๊ฒ ์ต๋๊น?
[1] https://ishara-cooray.blogspot.com/2019/11/how-to-change-default-hostname-of-wso2.html
@isharac
์๋
ํ์ธ์,
์์ APIM์ ์คํํ๊ณ ์ฌ๊ธฐ ์์ ๊ตฌ์ฑ์ ๋จ๊ณ๋ณ๋ก ์ค์ ํ์ง๋ง ์๋ํ์ง ์์ต๋๋ค.
๊ฒ์์ ๋ฐ ๋ก๊ทธ์ธ ํ์ด์ง์ ์คํ ์ด ์ค๋ฅ๋ 500(์ด ํ์ด์ง๋ ์๋ํ์ง ์์), ์ฌ์ฉ์ ์ด๋ฆ๊ณผ ๋น๋ฐ๋ฒํธ๋ฅผ ์
๋ ฅํ๊ณ ๋ก๊ทธ์ธ ๋ฒํผ์ ํด๋ฆญํ ํ ํ์ ์ค๋ฅ๋ 403(๊ธ์ง)์
๋๋ค.
wso2carbon.log๋ฅผ ์ฝ์์ต๋๋ค. ๊ฒ์์ ๋ฐ ์์ ์ค๋ฅ๋ ์ฐ๊ฒฐ์ด ๊ฑฐ๋ถ๋์์ผ๋ฉฐ ํ์์ ๋ํ ์ค๋ฅ๊ฐ ์๋๋๋ค.
@amir-dh
๋ฏผ๊ฐํ ๋ฐ์ดํฐ๋ฅผ ์ ๊ฑฐํ ํ ๋ถ์์ ์ํด ์๋ ํ์ผ์ ๊ณต์ ํ์ญ์์ค.
@isharac
wso2.zip
์ฌ๊ธฐ ์์ด์.
@amir-dh ,
๋ฆ๊ฒ ๋์์์ ์ฃ์กํฉ๋๋ค.
์ ๊ณต๋ ๊ตฌ์ฑ์ ๊ด์ฐฎ์ ๋ณด์
๋๋ค.
๊ทธ๋ฌ๋ ์ต์ ๋ฆด๋ฆฌ์ค์ [1]์์ ํ์ธ๋ ๋ฌธ์ ๋ก ์ธํด ์ญ๋ฐฉํฅ ํ๋ก์ ๊ตฌ์ฑ์ ๊ฐ์ ํ์ต๋๋ค.
์ต์ ๋ฆด๋ฆฌ์ค WSO2AM-3.1.0-M2 ์์ ๋ค์ ์๋ํ์ญ์์ค.
APIM-3.1.0-M 2๋ถํฐ ์ญ๋ฐฉํฅ ํ๋ก์๋ฅผ ๊ตฌ์ฑํ๋ ค๋ฉด ์๋ ๊ตฌ์ฑ ๋ณ๊ฒฝ์ ์ํํด์ผ ํฉ๋๋ค.
deployment.toml์์ ํธ์คํธ ์ด๋ฆ ๋ณ๊ฒฝ
[์ฌ๊ธฐ๋ ์ฌ๋]ํธ์คํธ ์ด๋ฆ = "api.am.wso2.com"
์ญ๋ฐฉํฅ ํ๋ก์ ๊ตฌ์ฑ
์๋ฒ {
๋ฃ๊ธฐ 443 SSL;
server_name api.am.wso2.com;
proxy_set_header X-Forwarded-Port 443;
ssl_certificate /usr/local/etc/nginx/ssl/nginx.crt;
ssl_certificate_key /usr/local/etc/nginx/ssl/nginx.key;
์์น / {
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass https://api.am.wso2.com :9443;
}
}
/etc/hosts์ ํธ์คํธ ๋งคํ ์ถ๊ฐ
127.0.0.1 .
์๋ฒ๋ฅผ ์ฒ์ ์์ํ์ง ์๋ ๊ฒฝ์ฐ ๊ด๋ฆฌ ์ฝ์์ ๋ก๊ทธ์ธํ์ฌ ์ฝ๋ฐฑ URL์ ๋ณ๊ฒฝํ์ญ์์ค.
https://api.am.wso2.com :9443/carbon/
์๋น์ค ์ ๊ณต์
์ฒด๋ก ์ด๋ํ์ฌ admin_admin_publisher๋ฅผ ์ฐพ์ต๋๋ค.
๊ฒ์์์ ์ฝ๋ฐฑ URL
regexp=(https://api.am.wso2.com:9443/publisher/services/auth/callback/login|https://api.am.wso2.com:9443/publisher/services/auth/callback/logout )
@isharac
APIM-3.1.0-M2๋ฅผ ๋ค์ด๋ก๋ํ๊ณ deployment.toml ํ์ผ์์ hostname
๋ฅผ ๋ณ๊ฒฝํ๊ณ nginx ๊ตฌ์ฑ์ ๋ค์๊ณผ ๊ฐ์ด ๋ณ๊ฒฝํ์ต๋๋ค.
์๋ฒ {
๋ฃ๊ธฐ 443 SSL;
์๋ฒ ์ด๋ฆ myDomain ;
proxy_set_header X-Forwarded-Port 443;
ssl_certificate /usr/local/etc/nginx/ssl/nginx.crt;
ssl_certificate_key /usr/local/etc/nginx/ssl/nginx.key;
์์น / {
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass https:// myDomain :9443;
}
}
ํ์ง๋ง ์๋ํ์ง ์์ต๋๋ค.
publisher
ํธ์ถ๋๋ฉด ์ฌ๊ธฐ๋ก ๋ฆฌ๋๋ ์
๋ฉ๋๋ค. ๋ณด์๋ค์ํผ ํฌํธ๊ฐ ์๋ MyDomain์ผ๋ก ๋ฆฌ๋๋ ์
๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด ์ญ ํ๋ก์ URI๊ฐ ์๋๋ผ https://mydomain.com/publisher
์์ https://mydomain.com:9445/oauth2/.....
๋ฆฌ๋๋ ์
ํฉ๋๋ค. mydomain ๋ค์ ์ค๋ ํฌํธ๋ฅผ ์๋์ผ๋ก ์ ๊ฑฐํ๋ฉด ์ ๋๋ก ์๋ํฉ๋๋ค.
์ด ๋ฌธ์ ๋ ๋ก๊ทธ์ธํ๋ ค๋ devportal
์์๋ ๋์ผํฉ๋๋ค.
๋ก๊ทธ์ธ ํ Management Console
์ ๊ฒฝ์ฐ ๋ก๊ทธ์ธ ํ์ด์ง ์์ ์ด URL๋ก ๋ฆฌ๋๋ ์
๋๊ณ ์ค๋ฅ 403(๊ธ์ง๋จ)์ด ๋ฐ์ํฉ๋๋ค.
์ฐธ๊ณ : ๋ณด๋ด์ฃผ์ ๋ฌธ์ ๋ฅผ ํ์ธํ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ features/apimgt/org.wso2.carbon.apimgt.publisher.feature/src/main/resources/publisher/site/public/theme/defaultTheme.js
๋ํด:
reverseProxy: {
auto: true,
forwardedHeader: 'x-forwarded-for',
loopbackHost: 'localhost',
defaultHTTPSPort: 9443,
},
๋ฌธ์ [1]์์๋ ์ฌ์ฉํ ์ ์์ง๋ง [2]์์๋ ์ฌ์ฉํ ์ ์์ต๋๋ค.
[1] (https://github.com/wso2/carbon-apimgt/pull/7842/files/88efcf71b4aa4b8bf5511db8fc91655ba7969aa8?utf8=%E2%9C%93&diff=split&w=1)
[2] (https://github.com/wso2/carbon-apimgt/pull/7858/files)
์๋ ํ์ธ์ @amir-dh
๋ฐฐํฌ.toml์๋ ํ๋ก์ ํฌํธ๋ฅผ ์ถ๊ฐํด์ผ ํฉ๋๋ค.
์๋ ๊ตฌ์ฑ์ ์ถ๊ฐํ์ญ์์ค.
[transport.https.properties]
ํ๋ก์ ํฌํธ = 443
@isharac
๋ฐฐํฌ ํ์ผ์ ํ๋ก์ ํฌํธ๋ฅผ ์ถ๊ฐํ์ต๋๋ค.
https://mydomain.com/
ํธ์ถํ๋๋ฐ ๊ฒ์์ ํฌํธ๋ก ๋ฆฌ๋๋ ์
๋์์ต๋๋ค.
ํ์ง๋ง ๋ ํธ์ถํ๋ฉด https://mydomain.com/publisher
๊ฐ๋ก ๋ฆฌ๋๋ ์
https://**myIP**/publisher
๋๋์ด ๋ฉ์์ง๋ฅผ ์ป์ This site canโt be reached
. devportal
๋ฐ carbon
URL์์ ๋์ผํ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ต๋๋ค.
@amir-dh
์ ๋๊ธ์ ์ฐพ์์ฃผ์ธ์.
'' https://mydomain.com/ ์ ํธ์ถํ๋๋ฐ ๊ฒ์์ ํฌํธ๋ก ๋ฆฌ๋๋ ์
๋์์ต๋๋ค.''
์ด๊ฒ์ ๊ธฐ๋ณธ ์ผ์ด์ค์
๋๋ค.
IP๋ก ๋ฆฌ๋๋ ์
์ด ์ฝ๊ฐ ์ด์ํด ๋ณด์
๋๋ค.
์ถ๊ฐ ๋ถ์์ ์ํด ๋ธ๋ผ์ฐ์ ์ฝ์์์ ๋ค์ด๋ก๋ํ nginx.conf ๋ฐ HAR ํ์ผ์ ๊ณต์ ํด ์ฃผ์๊ฒ ์ต๋๊น?
์๋๋ฅผ ์ฐธ๊ณ ํ์ฌ ํฌ๋กฌ์์ ๋ค์ด๋ก๋ ๋ฒํผ์ ์ฐพ์ ์ ์์ต๋๋ค.
myconf.zip
์ฌ๊ธฐ ์์ด์
@amir-dh
๊ตฌ์ฑ์ ๊ณต์ ํด ์ฃผ์
์ ๊ฐ์ฌํฉ๋๋ค.
nginx.conf์์ proxyPass๋ IP๋ก ๊ตฌ์ฑ๋ฉ๋๋ค.
์๋์ ๊ฐ์ด ๋๋ฉ์ธ์ผ๋ก ๋ณ๊ฒฝํ๊ณ ๋ค์ ํ์ธํด ์ฃผ์๊ฒ ์ต๋๊น?
proxy_pass https://myDomain :9443;
๊ฐ์ฌ ํด์.
์๋ ํ์ธ์ @amir-dh ,
์ง์ ๋ HAR์์ IP ์ฃผ์๋ก์ ๋ฆฌ๋๋ ์ ์ ๋ณผ ์ ์์ต๋๋ค. ๋ก ์ธํด ์์ฒญ์ด ์คํจํ ๊ฒ ๊ฐ์ต๋๋ค.
invalid_callback
--
Registered callback does not match with the provided url.
๋ฐ๋ผ์ ๋ฌธ์ ๋ ์๋ง๋ admin_apim_publisher
์ ๊ณต๋ ์ฝ๋ฐฑ URL์ผ ๊ฒ์
๋๋ค.
์ ๊ท์์ ๋ค์ URL์ด ์์ด์ผ ํฉ๋๋ค.
https://mydomain.com/publisher/services/auth/callback/login
@isharac @tmkasun
๋์ ์ฃผ์
์ ๊ฐ์ฌํฉ๋๋ค.
๋น์ ์ ํ์ผ๋ก ๋ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ต๋๋ค.
๋๋ ๊ตฌ์ฑ ์๋์ ์ค์ :
hostname
์ mydomain
๋ก ๋ณ๊ฒฝserver {
listen 443 ssl;
server_name myDomain;
proxy_set_header X-Forwarded-Port 443;
ssl_certificate /usr/local/etc/nginx/ssl/nginx.crt;
ssl_certificate_key /usr/local/etc/nginx/ssl/nginx.key;
location / {
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass https://myDomain:9443;
}
}
๋ฐฐํฌ ํ์ผ์ ํ๋ก์ ํฌํธ ์ถ๊ฐ:
[transport.https.properties]
ํ๋ก์ ํฌํธ = 443
๋ฐฐํฌ ํ์ผ์ devportal
URL ๋ฐ gwdevportal
URL์ localhost ์์ mydomain.com์ผ๋ก ๋ณ๊ฒฝ ํ๊ณ ํฌํธ๋ฅผ ์ ๊ฑฐํฉ๋๋ค.
@amir-dh
๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์ด์ ๊ธฐ์ฉ๋๋ค. :)
@isharac
๋๋ ๊ตฌ์ฑ๋ ๋ชจ๋ ๊ฒ์ ๋ฐ๋๋ค
๊ทธ๋ฆฌ๊ณ " TypeError:Cannot read property "forwardedHeader" from undefined .... "๋ฅผ ๋ณด์์ต๋๋ค.
$HOST/devportal/apis์์ ํ์จ์ ์ฌ๋ ค๊ณ ํ ๋
ํ์ด์ง๋ $HOST/devportal/services/configs๋ก ๋ฆฌ๋๋ ์
๋ฉ๋๋ค.
์๊ฒฌ ์์ผ์ญ๋๊น ?
๋ต๋ณ ๋ถํ๋๋ฆฝ๋๋ค
ํ๊ฒฝ
nginx ๋ฒ์ : nginx/1.10.3
WSO2 APIM 3.1.0 M3
TID: [-1234] [devportal] [2019-12-03 02:19:55,194] ์ค๋ฅ {org.jaggeryjs.jaggery.core.manager.WebAppManager} - org.mozilla.javascript.EcmaError: TypeError: "์์ฑ์ ์ฝ์ ์ ์์" ์ ์๋์ง ์์(/devportal/services/login/idp.jag#28) org.jaggeryjs.scriptengine.exceptions.ScriptException: org.mozilla.javascript.EcmaError: TypeError: ์ ์๋์ง ์์(/devportal/์์ "forwardedHeader" ์์ฑ์ ์ฝ์ ์ ์์ต๋๋ค. ์๋น์ค/๋ก๊ทธ์ธ/idp.jag#28)
org.jaggeryjs.scriptengine.engine.RhinoEngine.execScript(RhinoEngine.java:587)
org.jaggeryjs.scriptengine.engine.RhinoEngine.exec(RhinoEngine.java:289)
org.jaggeryjs.jaggery.core.manager.WebAppManager.exec(WebAppManager.java:589)
org.jaggeryjs.jaggery.core.manager.WebAppManager.execute(WebAppManager.java:508)
org.jaggeryjs.jaggery.core.JaggeryServlet.doGet(JaggeryServlet.java:24)์์
javax.servlet.http.HttpServlet.service(HttpServlet.java:634)์์
javax.servlet.http.HttpServlet.service(HttpServlet.java:741)์์
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:712)
org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:459)
org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:352)
org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:312)
org.jaggeryjs.jaggery.core.JaggeryFilter.doFilter(JaggeryFilter.java:76)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
org.wso2.carbon.ui.filters.cache.ContentTypeBasedCachePreventionFilter.doFilter(ContentTypeBasedCachePreventionFilter.java:53)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
org.apache.catalina.filters.HttpHeaderSecurityFilter.doFilter(HttpHeaderSecurityFilter.java:126)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:490)
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
org.wso2.carbon.identity.context.rewrite.valve.TenantContextRewriteValve.invoke(TenantContextRewriteValve.java:80)
org.wso2.carbon.identity.authz.valve.AuthorizationValve.invoke(AuthorizationValve.java:100)
org.wso2.carbon.identity.auth.valve.AuthenticationValve.invoke(AuthenticationValve.java:74)
org.wso2.carbon.tomcat.ext.valves.CompositeValve.continueInvocation(CompositeValve.java:99)
org.wso2.carbon.tomcat.ext.valves.TomcatValveContainer.invokeValves(TomcatValveContainer.java:49)
org.wso2.carbon.tomcat.ext.valves.CompositeValve.invoke(CompositeValve.java:62)
org.wso2.carbon.tomcat.ext.valves.CarbonStuckThreadDetectionValve.invoke(CarbonStuckThreadDetectionValve.java:146)
org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:678)
org.wso2.carbon.tomcat.ext.valves.CarbonContextCreatorValve.invoke(CarbonContextCreatorValve.java:57)
org.wso2.carbon.tomcat.ext.valves.RequestCorrelationIdValve.invoke(RequestCorrelationIdValve.java:116)
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
org.apache.catalina.connector.CoyoteAdapter.service์์(CoyoteAdapter.java:343)
org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:408)
org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:853)
org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1587)
org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)์์
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)์์
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
java.lang.Thread.run(Thread.java:748)์์
์์ธ: org.mozilla.javascript.EcmaError: TypeError: ์ ์๋์ง ์์(/devportal/services/login/idp.jag#28)์์ "forwardedHeader" ์์ฑ์ ์ฝ์ ์ ์์ต๋๋ค.
org.mozilla.javascript.ScriptRuntime.constructError์์(ScriptRuntime.java:3687)
org.mozilla.javascript.ScriptRuntime.constructError(ScriptRuntime.java:3665)
org.mozilla.javascript.ScriptRuntime.typeError(ScriptRuntime.java:3693)
org.mozilla.javascript.ScriptRuntime.typeError2(ScriptRuntime.java:3712)
org.mozilla.javascript.ScriptRuntime.undefReadError(ScriptRuntime.java:3725)
org.mozilla.javascript.ScriptRuntime.getObjectProp(ScriptRuntime.java:1483)
org.jaggeryjs.rhino.devportal.services.login.c0._c_script_0(/devportal/services/login/idp.jag:28)
org.jaggeryjs.rhino.devportal.services.login.c0.call(/devportal/services/login/idp.jag)์์
org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:394)
org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:3091)
org.jaggeryjs.rhino.devportal.services.login.c0.call(/devportal/services/login/idp.jag)์์
org.jaggeryjs.rhino.devportal.services.login.c0.exec(/devportal/services/login/idp.jag)์์
org.jaggeryjs.scriptengine.engine.RhinoEngine.execScript(RhinoEngine.java:583)
... 50๊ฐ ๋
์๋ ํ์ธ์ @loeb-ift
์ฌ์ฉ ์ค์ธ APIM ๋ฒ์ ์ ๋ฌด์์
๋๊น?
devportal/site/public/theme/settings.js๋ฅผ ๊ณต์ ํ ์ ์์ต๋๊น?
์๋
ํ์ธ์ @isharac
๋ค์๊ณผ ๊ฐ์ด
root@wso2am-313 :/tmp/20191203# vi /opt/wso2am-3.1.0-m3/repository/deployment/server/jaggeryapps/devportal/site/public/theme/settings.js
const ์ค์ = {
์ฑ: {
์ปจํ
์คํธ: '/devportal',
๋ฆฌ๋ฒ์ค ํ๋ก์: {
ํ์ฑํ๋จ: ์ฌ์ค,
์ถ์ฒ: ' https://MYHOST ',
},
},
๋ถ์ฌ ์ ํ: {
Authorization_code: '์ฝ๋',
์์์ : '์์์ ',
refresh_token: '์๋ก ๊ณ ์นจ ํ ํฐ',
๋น๋ฐ๋ฒํธ: '๋น๋ฐ๋ฒํธ',
' iwa:ntlm ': 'IWA-NTLM',
client_credentials: 'ํด๋ผ์ด์ธํธ ์๊ฒฉ ์ฆ๋ช
',
' urn:ietf : params:oauth :grant- ์ ํ:saml2-bearer ': 'SAML2',
' urn:ietf : params:oauth :grant- type:jwt-bearer ': 'JWT',
kerberos: 'Kerberos',
},
};
๋๋ฌด ๋ง์ด
@loeb-ift
์ด ํ์ผ์ ๋ณ๊ฒฝํ์
จ์ต๋๊น?
์ฑ json์ ๋ค์๊ณผ ๊ฐ์์ผ ํฉ๋๋ค.
app: {
context: '/devportal',
customUrl: {
enabled: false,
forwardedHeader: 'X-Forwarded-For',
},
origin: {
host: 'localhost',
},
},
๊ธฐ๋ณธ ๊ตฌ์ฑ ํ์ผ์ [1]์ ์ฐธ์กฐํ์ญ์์ค.
[1] https://github.com/wso2/carbon-apimgt/blob/v6.5.399/features/apimgt/org.wso2.carbon.apimgt.store.feature/src/main/resources/devportal/site/public /ํ
๋ง/์ค์ .js
[https://ishara-cooray.blogspot.com/2019/11/how-to-change-default-hostname-of-wso2.html] ๋ฌธ์ ์ฐธ์กฐ
๋ฆฌ๋ฒ์ค ํ๋ก์ ์ค์ ์ ์ถ๊ฐํ๊ณ config /devportal/site/public/theme/settings.js๋ฅผ ํธ์งํ๋ ค๊ณ ํ์ต๋๋ค.
' forwardedHeader: 'X-Forwarded-For''๋ฅผ ์์ด๋ฒ๋ ธ์ต๋๋ค.'
๊ทธ๋ฌ๋ ๊ทธ๊ฒ์ ์ํ์ ๋ณด์ง ๋ชปํ์ต๋๋ค!
์ด์ setting.js๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
`const ์ค์ = {
์ฑ: {
์ปจํ
์คํธ: '/devportal',
๋ฆฌ๋ฒ์ค ํ๋ก์: {
ํ์ฑํ๋จ: ์ฌ์ค,
์ถ์ฒ: 'https://$MYHOST',
forwardedHeader: 'X-Forwarded-For',
},
},
};
grantTypes: {
authorization_code: 'Code',
implicit: 'Implicit',
refresh_token: 'Refresh Token',
password: 'Password',
'iwa:ntlm': 'IWA-NTLM',
client_credentials: 'Client Credentials',
'urn:ietf:params:oauth:grant-type:saml2-bearer': 'SAML2',
'urn:ietf:params:oauth:grant-type:jwt-bearer': 'JWT',
kerberos: 'Kerberos',
},
};
๋ธ๋ก๊ทธ๊ฐ ์คํด์ ์์ง๊ฐ ์๋ ๊ฒฝ์ฐ ์ฌ๊ณผํ์ง๋ง ๋ธ๋ก๊ทธ์ ์ธ๊ธํ๋ฏ์ด APIM 3.0.0์๋ง ์ ์ฉ๋ฉ๋๋ค.
APIM 3.1.0-m2๋ถํฐ ์ญ๋ฐฉํฅ ํ๋ก์ ๊ตฌ์ฑ์ ๋ณ๊ฒฝํด์ผ ํ๊ธฐ ๋๋ฌธ์
๋๋ค.
์ต์ ๊ตฌ์ฑ์ผ๋ก ๋ธ๋ก๊ทธ๋ฅผ ์
๋ฐ์ดํธํ๊ฒ ์ต๋๋ค.
APIM 3.1.0-m3์์ ์ญ๋ฐฉํฅ ํ๋ก์๋ฅผ ๊ตฌ์ฑํ๋ ค๋ฉด ์ฃผ์[1]์ ๋จ๊ณ๋ฅผ ๋ฐ๋ฅด์ญ์์ค.
[1] https://github.com/wso2/product-apim/issues/6808#issuecomment -559584220
@isharac
๋น์ ์ ๋ฉ์์ง๋ฅผ ์ฃผ์
์ ๊ฐ์ฌํฉ๋๋ค
์ฌ์ค ๋ธ๋ก๊ทธ๊ฐ ๋์์ด ๋ง์ด ๋์์ด์
ํ์ง๋ง ์ค์ํ ์ ์ ๋์น๊ณ
์ค์น ์์ฝ
OS: ๋ฐ๋น์ 4.9.189-3+deb9u2 (2019-11-11) x86_64 GNU/๋ฆฌ๋
์ค
nginx ๋ฒ์ : nginx/1.10.3(WSO2 3.1.0 M3 ํฌํจ)
์ค์น ๋จ๊ณ.
[ https://github.com/wso2/product-apim/issues/6808#issuecomment -559584220 ]
์ง๊ธ ์๋ํฉ๋๋ค
์๋
ํ์ญ๋๊น,
nginx ํ๋ก ํ
(WSO2 APIM 3.0)๊ณผ ๋์ผํ ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
๊ฒ์์ ๋๋ devportal์ ์ด๋ ค๊ณ ํ๋ฉด ๋ด ์ฝ์์ ๋ค์ ์ค๋ฅ๊ฐ ํ์๋ฉ๋๋ค.
-์ค๋ฅ: ์ค๋ฅ: ๋ถ๋ถ ํ ํฐ์ ์ฐพ์ ์ ์์ต๋๋ค. ์ต๋ช
๋ณด๊ธฐ๋ก ๋ฆฌ๋๋ ์
ํ๊ณ ์ฌ์ฉ์๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค. ํ ํฐ ์๋ก๊ณ ์นจ์ ์คํจํ์ต๋๋ค.
/admin ๋ฐ /carbon์ด ์ ์๋ํฉ๋๋ค.
nginx ๋ฒ์ : ํ๋ก ํ
์๋ฒ์ nginx/1.16.1
WSO2 - APIM์ด ๋ค๋ฅธ ์๋ฒ๋ณด๋ค ๋์(CentOS Linux ๋ฆด๋ฆฌ์ค 7.7.1908)
rpm์ผ๋ก WSO2 APIM 3.0 ์ค์น(WSO2 ์ฌ์ดํธ์ ํ)
๋คํธ์ํฌ ํ๋ฆ 9443,443 ๋ฐ 8243์ด ์ด๋ ค ์๊ณ Nginx Fronted ๋ฐ WSO2 APIM 3.0 ์๋ฒ
๋น์ ์ด ๋๋ฅผ ๋์ธ ์ ์์ต๋๊น, ๋๋ ์ด๋ค ํด๊ฒฐ์ฑ ๋ ์์ต๋๋ค :(
๊ฐ์ฌ ํด์
์
์๋ ํ์ธ์ @SamWso2 ,
๋๋ ๋น์ ์ด ์ด๋ฌํ ๋ก๊ทธ ๋ฉ์์ง๋ฅผ ์ธ๊ธํ๊ณ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
์ด๊ฒ์ ๋ก๊ทธ์ธ ์ํ๋ฅผ ์๋ณํ๊ธฐ ์ํด ์ธ์๋ ์ผ๋ถ ์ ๋ณด ๋ก๊ทธ์ ๋๋ค. ์ด ๋ก๊ทธ๋ ์ผ๋ฐ ์ค์ ์์๋ ๋ณผ ์ ์์ต๋๋ค.
๋ฌธ์ ์ ๋ํด ์์ธํ ์ค๋ช ํด ์ฃผ์๊ฒ ์ต๋๊น? ๋๋ ๋ฌธ์ ๋ฅผ ๋ถ์ํ๊ธฐ ์ํด HTTP ์์นด์ด๋ธ(HAR) ํ์ผ์ ์ ๊ณตํ์๊ฒ ์ต๋๊น?
๊ณ์ ๋ก๊ทธ์ธ ๋ฃจํ ์๋๋ฆฌ์ค๋ฅผ ๊ฒฝํํ๋ค๋ฉด @isharac ์ ๋ธ๋ก๊ทธ๋ฅผ ๋ฐ๋ผ APIM 3.0.0์์ ์ญ๋ฐฉํฅ ํ๋ก์๋ฅผ ๊ตฌ์ฑํ ์ ์์ต๋๋ค.
https://ishara-cooray.blogspot.com/2019/11/how-to-change-devportal-to-different.html
์๋ ํ์ธ์ tmkasun๋
๋ด๋ถ์์ /devportan ๋ฐ /publisher์ ๋ก๊ทธ์ธํ ์ ์์ต๋๋ค.
์ธ๋ถ์์๋ ๊ณต๊ฐ URL(NGINX์ ๊ตฌ์ฑ๋จ)์ ์ฌ์ฉํ๊ณ Carbon ๋ฐ ๊ด๋ฆฌ ํฌํธ์ ์ก์ธ์คํ ์ ์์ต๋๋ค.
devportal URL์๋ ์ก์ธ์คํ ์ ์์ง๋ง ๋ก๊ทธ์ธํ ์ ์์ต๋๋ค. ๋ฃจํ๊ฐ ..... ๊ทธ๋ฆฌ๊ณ ์๋ฌด ๊ฒ๋ ์ป์ง ๋ชปํฉ๋๋ค.
๋ด ํ๋ก๋์
ํ๊ฒฝ์ NGINcX๊ฐ ํฌํจ๋ WSO2 APIM 2.6์ด ์์ผ๋ฉฐ ์ ์๋ํฉ๋๋ค.
๊ฐ์ฌ ํด์
Squid ํ๋ก์(์์ Nginx ์ญ๋ฐฉํฅ ํ๋ก์)๋ฅผ ์ฌ์ฉํ์ฌ ์ธํฐ๋ท์ ์ฐ๊ฒฐํ์ง๋ง WSO2 ๊ตฌ์ฑ์์ ์ด ๋งค๊ฐ๋ณ์๋ฅผ ๊ตฌํํ์ง ์์ต๋๋ค.
wSO2 APIM 3.0์์ ์ธํฐ๋ท์ด ๋๊ฐ๋๋ก ํ๋ก์๋ฅผ ๊ตฌ์ฑํ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผ ํฉ๋๊น?
๊ฐ์ฌ ํด์
๋์์ด ๋์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
https://apim.docs.wso2.com/en/latest/install-and-setup/deploying-wso2-api-manager/configuring-the-proxy-server-and-the-load-balancer/#step -2 -configure-the-load-balancerreverse-proxy-server
๋๋ ๋ฃ์๋ค
ํ์ง๋ง ์๋์ ์ค๋ฅ๊ฐ ์์ต๋๋ค.
TID: [-1234] [devportal] [2020-03-10 10:45:20,910] ์ค๋ฅ {org.jaggeryjs.jaggery.core.manager.WebAppManager} - org.mozilla.javascript.WrappedException: ๋ํ๋ org.jaggeryjs.scriptengine .exceptions.ScriptException: java.net.ConnectException: ์ฐ๊ฒฐ์ด ๊ฑฐ๋ถ๋จ(์ฐ๊ฒฐ์ด ๊ฑฐ๋ถ๋จ)(<
nginx ์๋ฒ๋ฅผ ํ๋ก ํธ์๋์์ ๋ฆฌ๋ฒ์ค ํ๋ก์๋ก ์ฌ์ฉ = OK
ํ์ง๋ง ์ธํฐ๋ท์ ๋๊ฐ๊ธฐ ์ํด ์ค์ง์ด ํ๋ก์๋ฅผ ์ฌ์ฉํฉ๋๋ค.
wSO2 APIM 3.0 ๊ตฌ์ฑ์์ ํ๋ก์ ์ค์ง์ด๊ฐ ์ธํฐ๋ท์ ๋๊ฐ๋๋ก ๊ตฌ์ฑํ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผ ํฉ๋๊น? (NGINX ๋ฆฌ๋ฒ์ค ํ๋ก์๊ฐ ์๋๋ผ squi ํ๋ก์)
๊ฐ์ฌ ํด์
์๋
ํ์ธ์ @isharac
wso2am 3.1.0์ ์ฌ์ฉํ๊ณ ์์ต๋๋ค. nginx๋ฅผ ์ฌ์ฉํ์ฌ wso2๋ฅผ ๋ผ์ฐํ
ํ๊ณ ์ถ์ต๋๋ค. ํธ์คํธ ์ด๋ฆ๊ณผ pory ํฌํธ๋ฅผ ์ฌ์ฉํ์ฌ wso2 deployment.toml์ ๊ตฌ์ฑํ๊ณ nginx๋ฅผ ๊ตฌ์ฑํ์ง๋ง ์ฌ์ ํ ๋ฌธ์ ์ ์ง๋ฉดํด ์์ต๋๋ค. ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด ์ฃผ์๊ฒ ์ต๋๊น?
Nginx๋ ํ๋์ VM์์ ํธ์คํ ๋๊ณ wso2๋ ๋ค๋ฅธ VM์์ ์ฌ์ฉ ๊ฐ๋ฅํฉ๋๋ค.