Спасибо за ответы! Я бы сказал, что @Nan Yu, вероятно, получил ответ, который оказался ближе всего к решению, которое я придумал, но я решил, что поделюсь тем, что в итоге получилось, в методе Configure () моего файла Startup.cs .
using Microsoft.AspNetCore.Authentication.OpenIdConnect;
using Microsoft.IdentityModel.Protocols.OpenIdConnect;
...
var openidOptions = new OpenIdConnectOptions(authenticationScheme)
{
ClientSecret = secret,
AutomaticAuthenticate = true,
SignInScheme = "Identity.External",
Authority = identityServerAddress,
ClientId = clientId,
RequireHttpsMetadata = true,
ResponseType = OpenIdConnectResponseType.CodeIdToken,
AutomaticChallenge= true,
GetClaimsFromUserInfoEndpoint = true,
SaveTokens = true,
Events = new OpenIdConnectEvents
{
OnRemoteSignOut = async remoteSignOutContext =>
{
remoteSignOutContext.HttpContext.Session.Clear();
},
},
};
openidOptions.Scope.Clear();
openidOptions.Scope.Add("openid");
app.UseOpenIdConnectAuthentication(openidOptions);
Добавление этого к моему клиенту .NET Framework 4.6 позволило мне успешно установить связь с моим .NET Core 2.0 Identity Server! Я ценю всех, кто пытался помочь :)
Вы могли использовать что-то вроде этого:
//access.php
<?php
//put sha1() encrypted password here - example is 'hello'
$password = 'aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d';
session_start();
if (!isset($_SESSION['loggedIn'])) {
$_SESSION['loggedIn'] = false;
}
if (isset($_POST['password'])) {
if (sha1($_POST['password']) == $password) {
$_SESSION['loggedIn'] = true;
} else {
die ('Incorrect password');
}
}
if (!$_SESSION['loggedIn']): ?>
<html><head><title>Login</title></head>
<body>
<p>You need to login</p>
<form method="post">
Password: <input type="password" name="password"> <br />
<input type="submit" name="submit" value="Login">
</form>
</body>
</html>
<?php
exit();
endif;
?>
Затем на каждом файле Вы хотите защитить, поместить наверху:
<?php
require('access.php');
?>
secret text
Это не очень хорошее решение, но это могло бы сделать то, что Вы хотите
Править
Вы могли добавить logout.php страницу как:
<?php
session_start();
$_SESSION['loggedIn'] = false;
?>
You have logged out
Если Вы хотите избежать cookie, сессий и не хотите играть с .htaccess файлами, можно также сделать аутентификацию HTTP soley с PHP:
http://www.php.net/manual/en/features.http-auth.php
Можно трудно кодировать пароль в файл и изменить его по мере необходимости или включать его из файла не в web_accessible каталоге.
Оборотная сторона - Вы, не имеют способности отформатировать экран "входа в систему" - это будет стандартное диалоговое окно аутентификации HTTP
Я сомневаюсь, рассчитало ли это как лучший wasy выполнения его, но это работало бы. И так как безопасность, кажется, не большая проблема для Вас, то, что этот путь, столь небезопасный, как ад, вероятно, не побеспокоит Вас также.
Имейте login.php страницу, которая берет пароль и затем устанавливает cookie, если данные для входа в систему корректны. Каждый php файл может затем проверить на существование cookie, чтобы определить, "зарегистрирован" ли пользователь или нет, и информация о дисплее соответственно.
login.php
...
if(isset($_POST['password']) && $_POST['password'] == 'my_top_secret_word') {
setcookie('loggedin', 'true', time() + 1200, '/url/');
} else {
setcookie('loggedin', 'false', time() - 1200, '/url/');
// display a login form here
}
etc
каждая "защищенная" страница затем проверила бы на этот cookie:
if(isset($_COOKIE['loggedin'])) {
if($_COOKIE['loggedin'] == 'true') {
$showHidden = true;
} else {
$showHidden = false;
}
} else {
$showHidden = false;
}
Я уверен, что Вы получаете (очень небезопасную) идею...
Хорошо, так как Вы знаете, что это небезопасно для начала, Вы могли сохранить пароль в текстовом файле где-нибудь на Вашем веб-сервере. Когда кто-то получает доступ к странице, Вы могли показать форму, которая просит пароль. Если пароль соответствует тому, что находится в текстовом файле, то Вы перезагружаете страницу и отображаете информацию. Используя текстовый файл позволит Вам изменять пароль, не имея необходимость изменять страницу, к которой они получают доступ, когда Вы хотите изменить его. Вы все еще собираетесь быть передающим простым текстом везде, если Вы не используете SSL. Сообщите мне, нужен ли Вам некоторый код.