Cross-server authentication + MVC + Razor

0

Hej, nie mam pomysłu jak to rozgryźć:

Mam serwer A, który wystawia jwt i redirectuje usera na serwer B z POSTem w którym jest jwt token [po HTTPS]

Na serwerze B potrzebuje dodawać do headerów userowi Authorization: Bearer [token] przy każdym wejściu w endpoint który tego wymaga, lub w każdy bo to chyba bez różnicy i nie mam pomysłu jak to zrobić

Dodatkowo tego co kojarzę, to jwt raczej stosuje się przy webapi, a w mvc identity, ale jwt załatwia mi problem z uwierzytelnieniem pomiędzy 2 serwerami

Myślałem też aby dodawać ten token do cookies i stąd go wyciągać, ale chyba wtedy musiałbym nadpisać domyślne [Authorize] aby brało token z cookies? chodzi o własny Challenge w middleware?

Jakieś rady?

0

Jwt jest używany tam gdzie jest potrzebny, nie ma znaczenia czy to API czy MVC. Aczkolwiek faktycznie częściej używa się ich do API jako że MVC ma wbudowany mechanizm do autentykacji przy użyciu cookies.

Co do tego jak to rozgryzc- token powinien być podawany przez klienta w każdym requescie, ale nie w cookies! Narazasz się tym na ataki którym trudniej zapobiec (MVC ma wbudowane zabezpieczenia jeśli używa się autentykacji cookies) przy użyciu JWT. Przechowuj token po stronie klienta, np. w local lub session storage i przekazuj go w Authorization header requestow.

0
Aventus napisał(a):

Przechowuj token po stronie klienta, np. w local lub session storage i przekazuj go w Authorization header requestow.

No właśnie z tym mam problem - Jak? Bo wysłać jsem requesta z headerem umiem, ale bez tego jak?

0

Czyli że chcesz zapewnić komunikację API - > API, dobrze rozumiem?

Jest tak to potrzebujesz czegoś w tym stylu : httpClient.DefaultRequestHeaders.Authorization jeśli wykonujesz request przy użyciu HttpClient.

0
Aventus napisał(a):

Czyli że chcesz zapewnić komunikację API - > API, dobrze rozumiem?

Jest tak to potrzebujesz czegoś w tym stylu : httpClient.DefaultRequestHeaders.Authorization jeśli wykonujesz request przy użyciu HttpClient.

Bez API.

Razor + widoki MVC z backendu

0

Chodzi o to, aby gdy user chodzi po stronie to dodawał się mu authorization header z tokenem

0

Rozwiązanie

dodanie Identity +

public ActionResult StupidCompanyLogin()
{
	return View();
}

[HttpPost]
//[ValidateAntiForgeryToken] - Whats the point? F**k security 
public async Task<ActionResult> StupidCompanyLogin(string name)
{
	var user = await UserManager.FindByNameAsync(name);

	if (user != null)
	{
		await SignInManager.SignInAsync(user, true); // signs user without password
	}

	return View();
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1