Совместное использование файлов cookie FormsAuthentication между приложениями WCF и ASP.NET

Для дополнительной безопасности я генерирую cookie FormsAuthentication в своей службе WCF и возвращаю ее в свое веб-приложение, однако я хочу использовать этот файл cookie при обращении к конкретным службам в WCF. Как я могу настроить это для каждого запроса? Я установил ключ машины и дешифрования, но каждый раз, когда я проверяю файлы cookie, когда он попадает в службу WCF, куки файлы не найдены.

Я пробовал различные методы, чтобы добавить файл cookie в заголовок, но, казалось, имеет смысл просто сделать следующее, потому что он генерирует и добавляет его в заголовок.

Return FormsAuthentication.SetAuthCookie(email, False)

Затем, когда я проверяю файлы cookie на клиенте, используя...

HttpContext.Current.Response.Cookies

Он пуст.

Я делаю что-то не так на клиенте, все, что я пытаюсь сделать следующее.

If AccountService.Authenticate(model.Email, model.Password) Then
    Return RedirectToAction("Index", "Home")
End If

Надеясь, что он просто подберет cookie в заголовке из-за этого вызова службы.

В настоящее время я работаю над этим не так идеально, файл cookie возвращается в теле запроса из службы

сервер

If CheckPassword(password, Unicode.GetString(user.Password)) And user.EmailConfirmed Then
    Return FormsAuthentication.GetAuthCookie(email, False)
End If

клиент

Dim cookie As HttpCookie = AccountService.Authenticate(model.Email, model.Password)
If cookie IsNot Nothing Then
    HttpContext.Response.Cookies.Add(cookie)
    Return RedirectToAction("Index", "Home")
End If

Метод аутентификации (WCF)

Public Function Authenticate(email As String, password As String) As Boolean Implements IAccountService.Authenticate
    Dim user As [Public] = db.Publics.Where(
        Function(i) i.Email.ToLower = email.ToLower
    ).FirstOrDefault
    If Not IsNothing(user) Then
        If CheckPassword(password, Unicode.GetString(user.Password)) And user.EmailConfirmed Then
            Dim cookie As HttpCookie = FormsAuthentication.GetAuthCookie(email, False)
            HttpContext.Current.Response.Cookies.Add(cookie)
            Return True
        End If
    End If
    Return False
End Function
+1
источник поделиться

Посмотрите другие вопросы по меткам или Задайте вопрос