์๋
ํ์ธ์.
Azure ์ธ์ฆ๋ ์ฌ๋์ด๋ฉด ์ ํฌ ํ์ DB ์ ๋ณด๋ฅผ ์กฐํํด์ ์ธ์
์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํฉ๋๋ค.
๊ทผ๋ฐ ๊ฐํ์ ์ผ๋ก ์๋์ ๊ฐ์ด, ๋ก์ปฌ ์คํ ๋ฆฌ์ง์ ๋ฐ์ดํฐ๊ฐ ๋ง์ด ์์ฌ์ 400 (Bad Request - Request Too Long) ์๋ฌ๊ฐ ๋ฐ์ํฉ๋๋ค.
์ ํํ ์ค๋ฅ๊ฐ ๋ฌด์์ธ์ง ๋ชฐ๋ผ ์ด๋ ๊ฒ ๋ฌธ์ ๋๋ ค๋ด
๋๋ค.ใ
ใ
์ฐธ๊ณ ๋ก, ์ผ๋ฐ์ ์ผ๋ก ๋ก๊ทธ์ธํ ๋์๋ ๋ฌธ์ ๊ฐ ์๋ค๊ฐ
์ธ์
์ด ์์ด์ ธ์ ๋ค์ ๋ก๊ทธ์ธํ ๋๊ฐ ๋ฌธ์ ์ง ์์๊น ์ถ์ต๋๋ค.
2๊ฐ์ ์ข์์
nyjin
2
๋ญ๊ฐ ์น ์์ฒญํ ๋๋ง๋ค ์ธ์
๊ด๋ จ ์ ๋ณด๋ค์ด ์ถ๊ฐ ์ ์ฌ๋๋ ๋๋์ด๋ค์.
์ธ์
์์ฑ ์ดํ์ ์น ์คํ ๋ฆฌ์ง ๋ณํ๋ฅผ ํ์ธํด๋ณด์๊ฒ ์ด์?
2๊ฐ์ ์ข์์
์ ์์ ์ผ๋ก ์ธ์
์ด ์๊ธธ๋ ์น ์คํ ๋ฆฌ์ง๋ฅผ ๋ด๋ณด๋ฉด ๋ ๊น์?
์ ์ํฉ์ด ์ง๊ธ, ๊ฐํ์ ์ผ๋ก ์ธ์
์ด ๋๊ฒผ์๋ ๋ค์ AD ์ธ์ฆ(Azure) ์ดํ์ ๋ฐ์ํ๋๊ฑฐ ๊ฐ์ต๋๋ค.
2๊ฐ์ ์ข์์
nyjin
4
๋์ผํ ์ด์์ ๋ํ ์ง๋ฌธ์ด stackoverflow์ ์๋ ๊ฒ ๊ฐ์ ๊ณต์ ๋๋ ค์.
๊ฐ๋จํ ์ ๋ฆฌํ๋ฉด,
- azure ad oauth2 ์ฟ ํค๊ฐ ๋ง๋ฃ๋ฉ๋๋ค.
- login.microsoft.com์ผ๋ก ๊ฐ๋ค์ค๋ฉด์ ๋ง๋ฃ๋ ์ฟ ํค๊ฐ ๊ฐฑ์ ํฉ๋๋ค. ์ด๋ nonce ์ฟ ํค๊ฐ ์๋ก ์ถ๊ฐ ๋ฉ๋๋ค.
- ajax๋ cross domain ์ ์ฑ
์ผ๋ก ๋ค๋ฅธ ๋๋ฉ์ธ(microsoft.com)๋ฅผ ์ ๋๋ก ์ ๊ทผํ์ง ๋ชปํ์ง๋ง, nonce ์ฟ ํค๋ ์ด๋ฏธ ํ์ด์ง์ ์ถ๊ฐ ๋ฉ๋๋ค.
- ๋์ผ ํ์์ด ๋ฐ๋ณต ๋๊ณ , nonce ์ฟ ํค๋ ๋น ๋ฅด๊ฒ ์ฆ๊ฐ ํฉ๋๋ค.
ํด๊ฒฐ์ฑ
OWIN OpenId ํ๋ ์์ํฌ์ ์ฒ๋ฆฌ๋ฅผ ํ์ฅํด์ ajax ์ฒ๋ฆฌ๋ฅผ ๋ค๋ฅด๊ฒ ์ ์ฉํ์ฌ redirect์ ํจ๊ป ์ ๊ท ์ฟ ํค๋ฅผ ๋ณด๋ด๋ ์ผ์ ๋ง์ต๋๋ค.
public void ConfigureAuth(IAppBuilder app)
{
app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);
app.UseCookieAuthentication(new CookieAuthenticationOptions());
app.UseOpenIdConnectAuthentication(
new OpenIdConnectAuthenticationOptions
{
ClientId = clientId,
Authority = authority,
Notifications = new OpenIdConnectAuthenticationNotifications
{
RedirectToIdentityProvider = ctx =>
{
bool isAjaxRequest = (ctx.Request.Headers != null && ctx.Request.Headers["X-Requested-With"] == "XMLHttpRequest");
if (isAjaxRequest)
{
ctx.Response.Headers.Remove("Set-Cookie");
ctx.State = NotificationResultState.HandledResponse;
}
return Task.FromResult(0);
}
}
});
}
์๊ฒฌ
stackoverflow์ ๊ธ์ ์๋ ๊ทธ๋๋ก ์ ์ด๋ดค์ต๋๋ค. ์ค์ญ์ด ์๋๋ผ๋ ์ํด ๋ถํ ๋๋ฆฝ๋๋ค.
๋ด์ฉ๋ง ๋ด์๋ ์ธ์
๋ง๋ฃ ๋์ ๋ ์ธ์
์ฟ ํค๊ฐ ๊ฐฑ์ ๋๋๋ฐ, ํฌ๋ก์ค ๋๋ฉ์ธ ์ ์ฑ
์ผ๋ก ์ ์์ ์ธ ํ์ ์ฒ๋ฆฌ๊ฐ ์ด๋ค์ง์ง ์์์ ์คํ ๋ฆฌ์ง์ ์ฟ ํค๊ฐ ๋์ ์ ์ฌ ๋๋ ์ด์๋ก ๋ณด์
๋๋ค.
์ด๋ฅผ ํํผํ๊ธฐ ์ํด์ ์ธ์
๋ง๋ฃ๋ก ์ฟ ํค ๊ฐฑ์ ํ ๋ ์ฟ ํค๋ฅผ ๊ฐฑ์ ํ์ง ์๊ณ 401์ ๋ฐ์์์ผ์ ajax๊ฐ ํ์ด์ง ์ ์ฒด๋ฅผ ๊ฐฑ์ ์ํค๋ ๋ฐฉ์์ผ๋ก ์ ์ ์ฒ๋ฆฌ ๋๋๋ก ์ ๋ํ๋ ์ฝ๋๋ก ๋ณด์
๋๋ค.
์ด ์ฝ๋๋ก ํด๊ฒฐ๋์ง ์์ ์ ์์ต๋๋ค. ํ์ง๋ง ์๋ง๋ ์์ธ์ stackoverflow์ ๊ฒ๊ณผ ๋์ผํด๋ณด์ฌ์ ๋ค๋ฅธ ํด๊ฒฐ์ฑ
๋ค์ ์ฐพ์ ์ฐจ๊ทผ์ฐจ๊ทผ ๋์ํด๋ด์ผ ๋๊ฒ ๋ค์.
์ฐธ๊ณ
3๊ฐ์ ์ข์์
์ ๋ง ๊ณ ๋ง์ต๋๋ค.
ํ
์คํธ ํด๋ณด๊ณ ์ ๋ณด ๊ณต์ ํ๊ฒ ์ต๋๋ค!
3๊ฐ์ ์ข์์
ํ๋๋ง ๋ ์ง๋ฌธํด๋ณด๊ฒ ์ต๋๋ค.
์ฌ์ค ์ ํฌ ์ฌ์ดํธ๊ฐ, ajax๋ฅผ ์ด์ฉํ ๋น๋๊ธฐ ํต์ ์ ๋ง์ด ์ฌ์ฉํ๊ณ ์์ต๋๋ค.
ํด๋น ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ ๊ฒ๋, ์ค๋ซ๋์ ์ฌ์ฉ์ํ๋ค๊ฐ ํ์ด์ง ๋ฆฌ๋ก๋๊ฐ ๋์ง ์์ ์ํ์์
๋ฒํผ์ด๋ ๋ค๋ฅธ ์ก์
์ ajax๋ฅผ ์ด์ฉํ์ฌ ๋น๋๊ธฐ ํต์ ์ด ๋ฐ์ํ ๋
์ ํํ๋ ๋ชจ๋ฅด๊ฒ ์ง๋ง ์ด ๋, login.microsoft.com ์ ๊ฐ๋ฐ์ค๋๊ฑฐ ๊ฐ์ต๋๋ค.
๊ทธ๋ผ ์ ๋ ajax๋ฅผ ์ด์ฉํ ๋น๋๊ธฐ ํต์ ์ด์ ์,
์ฟ ํค/์ธ์
๊ฐ์ด ์๋์ง ์๋์ง ํ๋จํด์ ์์ผ๋ฉด, 401 ์๋ฌ๋ฅผ ๋ฐ์ํ์ฌ ํ์ด์ง๋ฅผ ๋ฆฌ๋ก๋ ์์ผ์ผ ํ๋๊ฑด๊ฐ์?
2๊ฐ์ ์ข์์
nyjin
7
์ฟ ํค๊ฐ ์๋ ์ํ๋ฅผ ์ฒดํฌ ํ๋ ๊ฒ์ด ์๋ ๋ง๋ฃ๋ ์ฟ ํค๋ฅผ ์ด์ฉํ์ฌ API๋ฅผ ํธ์ถํ ๋ ํ๋ ์์ํฌ ์์ค์์ ์๋ก์ด ์ฟ ํค๋ฅผ ๊ฐ์ ธ์ค๋ ๋
ธ๋ ฅ์ ์ค๊ฐ์ ๋์์ฑ์ 401 ์ค๋ฅ๋ฅผ ๋ฐ์์ํจ ๋ค์ ajax ๋จ์์ 401๋ฅผ ๋ฐ์ผ๋ฉด ํ๋ฉด์ ์ ์ฒด ๊ฐฑ์ ํ๊ณ ์ ๊ท ์ฟ ํค๋ฅผ ๊ฐ์ ธ์ ํฌ๋ก์ค ๋๋ฉ์ธ ์ด์๋ฅผ ํด๊ฒฐํ๋ ๋ฐฉ์์
๋๋ค.
์ฟ ํค ์ํ๋ฅผ ์ฒดํฌ ํ๋ ์ฌ์ ์ฒ๋ฆฌ๊ฐ ์๋๋ผ ์๋ก์ด ์ฟ ํค๋ฅผ ๊ฐ์ ธ์ฌ ๋์ ์ฌํ ์ฒ๋ฆฌ๋ฅผ ์์ ํ๋ ํด๊ฒฐ์ฑ
์ผ๋ก ๋ณด์๋ฉด ๋๊ฒ ์ต๋๋ค.
3๊ฐ์ ์ข์์
์ ์ดํด๋ ์๋์ง๋ง, ์ด์ ๋ ์ ๊ฐ ํด๊ฒฐํด์ผํ๋ ๋ฌธ์ ์ธ๊ฑฐ ๊ฐ์ต๋๋ค.
์ ์ฑ์ค๋ฌ์ด ๋๊ธ ๋๋ฌด๋๋ฌด ๊ณ ๋ง์ต๋๋ค.
3๊ฐ์ ์ข์์