Авторизуйтесь через Postman в приложении. net core 3, используя Auth0 - PullRequest
0 голосов
/ 11 марта 2020

У меня есть приложение. net с настройкой входа через Auth0 (отлично работает с взаимодействием с пользователем), но я хочу войти в систему с помощью скрипта без взаимодействия с пользователем, который не работает. В основном я хочу запустить LogicApp или какой-нибудь скрипт с жестко запрограммированным пользователем / pass ночью, который обращается к странице внутри моего приложения.

Я пробовал Azure LogicApps и Postman с теми же результатами. Я пытаюсь получить доступ к странице внутри моего приложения, передавая имя пользователя / пароль как basi c auth. Я получаю несколько перенаправлений и возвращаюсь на страницу входа. Auth0 не предоставляет никаких журналов, поэтому я предполагаю, что аутентификация не достигает Auth0.

Obs1: у меня была эта настройка, которая, я уверен, работала около 6 месяцев go, совсем недавно я понял, что она перестала работать, возможно, это изменение в Auth0 или из-за перехода с . net ядро ​​с 2.1 по 3.

Obs2: Я также начал тестировать логин с токеном Bearer, но в коде будет слишком много изменений, которые я хочу оставить в качестве крайней меры.

Фрагмент Startup.cs

services.Configure<CookiePolicyOptions>(options =>'''
{
options.CheckConsentNeeded = context => true;
options.MinimumSameSitePolicy = SameSiteMode.None;
options.Secure = CookieSecurePolicy.Always;
});

// Add authentication services
services.AddAuthentication(options =>
{
options.DefaultAuthenticateScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.DefaultSignInScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = CookieAuthenticationDefaults.AuthenticationScheme;
})
.AddCookie()
.AddOpenIdConnect("Auth0", options =>
{
// Set the authority to your Auth0 domain
options.Authority = $"https://login.myapp.net";

// Configure the Auth0 Client ID and Client Secret
options.ClientId = "*********";
options.ClientSecret = "****************;

//Set response type to code
options.ResponseType = "code";

// Configure the scope
options.Scope.Clear();
options.Scope.Add("openid");
options.Scope.Add("profile");
options.Scope.Add("email");

//Set the correct name claim type
options.TokenValidationParameters = new TokenValidationParameters
{
NameClaimType = "name",
RoleClaimType = "https://schemas.myapp.net"
};

// Set the callback path
options.CallbackPath = new PathString("/callback");

// Configure the Claims Issuer
options.ClaimsIssuer = "Auth0";

Результат почтальона (3 перенаправления и найденная страница входа):

GET https://myapp.net/  
302

GET https://myapp.net/Account%2FLogin
302

GET https://login.myapp.net/authorize?client_id=****************&redirect_uri=https%3A%2F%2Fapp.myapp.net%2Fcallback&response_type=code&scope=openid%20profile%20email&code_challenge=***********&code_challenge_method=S256&response_mode=form_post&nonce=*****&x-client-SKU=ID_NETSTANDARD2_0&x-client-ver=5.5.0.0
302

GET https://login.myapp.net/login?state=***********&protocol=oauth2&redirect_uri=https%3A%2F%2Fapp.myapp.net%2Fcallback&response_type=code&scope=openid%20profile%20email&code_challenge=*********&code_challenge_method=S256&response_mode=form_post&nonce=*************&x-client-SKU=ID_NETSTANDARD2_0&x-client-ver=5.5.0.0
200
197ms 
▼
Request Headers
Authorization: Basic **********
User-Agent: PostmanRuntime/7.22.0
Accept: */*
Cache-Control: no-cache
Postman-Token: **************
Accept-Encoding: gzip, deflate, br
Cookie: did=*********; auth0_compat=***********
Referer: https://login.myapp.net/authorize?client_id=***************&redirect_uri=https%3A%2F%2Fapp.myapp.net%2Fcallback&response_type=code&scope=openid%20profile%20email&code_challenge=***********&code_challenge_method=S256&response_mode=form_post&nonce=******&state=*************&x-client-SKU=ID_NETSTANDARD2_0&x-client-ver=5.5.0.0
Connection: keep-alive
Response Headers
Server: nginx
Date: Wed, 11 Mar 2020 04:18:29 GMT
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: keep-alive
Vary: Accept-Encoding
ot-tracer-spanid: 6ed01af3e
ot-tracer-traceid: 3d5f35a407
ot-tracer-sampled: true
X-Auth0-RequestId: 655374d6432978
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1583900310
set-cookie: _csrf=eML8VgsIOn-ONcU0u3TeTx7U; Max-Age=864000; Path=/usernamepassword/login; HttpOnly; Secure
X-Robots-Tag: noindex, nofollow
X-Robots-Tag: noindex, nofollow, nosnippet, noarchive
X-Frame-Options: deny
Content-Security-Policy: frame-ancestors 'none'
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
Referrer-Policy: same-origin
ETag: W/"a6e-Dn+oh0+jgssgYbnM4PE"
cache-control: private, no-store, no-cache, must-revalidate, post-check=0, pre-check=0, no-transform
Content-Encoding: gzip
Strict-Transport-Security: max-age=15768000
▼
Response Body
[sign in page]

1 Ответ

0 голосов
/ 12 марта 2020

Пожалуйста, обратитесь к документу: Реализация предоставления пароля владельца ресурса

После настройки вашего приложения на портале вы можете напрямую отправить запрос на публикацию в конечную точку токена Auth0 с правильными параметрами, такими как grant_type / client_id / client_secret / username / password и scope, а конечная точка токена вернет токен доступа, который можно использовать для доступа к защищенному ресурсу:

var client = new RestClient("https://YOUR_DOMAIN/oauth/token");
var request = new RestRequest(Method.POST);
request.AddHeader("content-type", "application/x-www-form-urlencoded");
request.AddParameter("application/x-www-form-urlencoded", "grant_type=password&username=user%40example.com&password=pwd&audience=YOUR_API_IDENTIFIER&scope=read%3Asample&client_id=%24%7Baccount.clientId%7D&client_secret=YOUR_CLIENT_SECRET", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);

Вы можете проверить с помощью Fiddler или Postman.

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