Вход пользователя в систему из. Net Core 3.1 Web API - PullRequest
0 голосов
/ 03 августа 2020

Я долго боролся с этой реализацией. У меня был обходной путь, но он далек от идеала.

Я изо всех сил пытался получить доступ к текущему вошедшему в систему пользователю из моего веб-API. Обычно я бы мог войти в систему через клиента, а затем авторизоваться с помощью токена. Однако у меня есть проблема в том, что клиент - это не то программное обеспечение, которое выполняет запрос входа в систему.

Клиент написан на Unity 3D и встроен в сайт. Он передает данные сайту через веб-API. Однако, прежде чем пользователь получит доступ к клиенту, он должен войти на сайт через стандартную. Net Базовую систему входа. Итак, как видите, нет возможности передать токен аутентификации клиенту. Я пытаюсь сделать так, чтобы веб-API отвечал на запросы, обращаясь только к сведениям о текущем вошедшем в систему пользователю.

На данный момент я пытался получить доступ к пользовательским данным через HttpContext, но для этого мне пришлось включить Windows аутентификацию в проекте. Но теперь все вызовы веб-API приводят к ошибке 401, поскольку сам клиент не может отправить какую-либо информацию аутентификации.

Итак, мне нужно найти способ получить текущую информацию о зарегистрированном пользователе. внутри веб-API, где для этого API не требуется получать токены или другую информацию.

Есть идеи, как это может быть возможно?

1 Ответ

1 голос
/ 04 августа 2020

ОБНОВЛЕНИЕ 8.05.2020

Передача токена аутентификации от web к Unity 3D

Поскольку у вас меньше подробностей о клиент, я возьму пример о взаимодействии Unity Web Player и браузера.

Вызов функций содержимого веб-плеера Unity с веб-страницы

Unity Объект Web Player имеет функцию SendMessage(), которую можно вызывать с веб-страницы, чтобы вызывать функции в содержимом веб-плеера Unity. Эта функция очень похожа на функцию GameObject.SendMessage в API сценариев Unity. При вызове с веб-страницы вы передаете имя объекта, имя функции и единственный аргумент, а SendMessage() вызовет данную функцию в данном игровом объекте.

<script type="text/javascript" language="javascript">
<!--
//initializing the WebPlayer
var u = new UnityObject2();
u.initPlugin(jQuery("#unityPlayer")[0], "Example.unity3d");

function SaySomethingToUnity()
{
    u.getUnity().SendMessage("MyObject", "MyFunction", "Hello from a web page!");
}
-->
</script>

Вы можете использовать для отправки authentication token.

Итак, что мне нужно сделать, так это найти способ получить текущую информацию о зарегистрированном пользователе внутри веб-API, где API не нужно получать для этого токены или другую информацию.

Если у нас есть API, чтобы получить tokens, как вы ожидаете, то вы получаете доступ ко всем API с этим токеном. Аутентификация будет бесполезна, и система станет небезопасной. Потому что каждый может получить доступ с помощью magi c api.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...