我正在使用Auth0来获得一些在我的后端API服务器中工作的身份验证和授权。Auth0使用角色权限系统,它与此处描述的策略概念兼容-https://learn.microsoft.com/en-us/aspnet/core/security/authorization/policies?view=aspnetcore-3.1
在用户方面,我没有问题,收集令牌。当我研究令牌时,我注意到必要的范围正在通过。
{
"iss": "https://randomquoteexperimental.us.auth0.com/",
"sub": "removedonpurpose",
"aud": [
"https://thechalakas.com",
"https://randomquoteexperimental.us.auth0.com/userinfo"
],
"iat": 1601906519,
"exp": 1601992919,
"azp": "removedonpurpose",
"scope": "openid profile email",
"permissions": [
"read:penquotes"
]
}
此外,在同一个API服务器上,没有作用域、没有令牌和有令牌的endpoint都返回正常。因此,API服务器很好,并且可以读取无范围授权。
在我的API服务器上,我有以下内容。这是我的ConfigureServices。
// Register the scope authorization handler
services.AddSingleton<IAuthorizationHandler, HasScopeHandler>();
services.AddAuthorization(options =>
{
//TODO1 - similar to above , migrate this also to appsettings.json
options.AddPolicy("capquotes", policy => policy.Requirements.Add(new HasScopeRequirement("read:capquotes", "https://randomquoteexperimental.us.auth0.com/")));
options.AddPolicy("penquotes", policy => policy.Requirements.Add(new HasScopeRequirement("read:penquotes", "https://randomquoteexperimental.us.auth0.com/")));
});
而且,这是我尝试访问的简单endpoint。
[HttpGet]
[Route("PenScope1")]
[Authorize(Policy = "penquotes")]
public ActionResult<GeneralAPIResponse> PenScope1()
{
var tempItemViewModel = new GeneralAPIResponse();
var tempString1 = "You have the PEN Scope as per the rules";
tempItemViewModel.ListOfResponses.Add(tempString1);
return tempItemViewModel;
}
我遵循了官方指南,可在此处获得 - https://auth0.com/docs/quickstart/backend/aspnet-core-webapi/01-authorization#configure-the-sample-project
由于令牌具有正确的权限,并且它们是由在 Auth0 系统上配置的 API 服务器颁发的,因此我假设,就 Auth0 而言,一切都很好。
所以,我相信,我在我的. NET Core项目上犯了一个错误。
好的,所以我找到了答案。事实上,最终取决于令牌,以及即将发生的事情。
虽然,我需要的瞄准镜要来了,
"permissions": [
"read:penquotes"
]
. NET Core没有在权限下查找必要的范围。它在这里看。
"scope": "openid profile email",
由于必要的作用域不存在,授权被拒绝。最终,我更新了我的React客户端应用程序来请求必要的范围。
现在,查看正确的令牌,
{
//other token things
"scope": "openid profile email read:penquotes"
}
现在,授权正在进行,没有任何问题。看起来我的.NETCore配置不错,但我在请求令牌时出错了。
我试图在API网关上实现自定义授权,通过从Dynamodb读取用户对其背后每个特定endpoint的权限,来检查用户的权限。 授权程序似乎工作正常,并且它返回的策略在我看来很好(看看下面的内容) 然而,不管授权者在策略文档内部返回的效果如何,API网关仍然让我们所有的请求都通过。我从下面的APIendpoint获得状态200和结果集。 附注。我尝试使用显式的principalID(来自令牌的用户名
我正在尝试使用基本身份验证获取url。我设置用户/密码如下所示。同样的凭证在邮递员中工作。 我认为凭据设置不正确。这里怎么了?错误:
OAuth术语已经困扰我很久了。OAuth授权是像一些人建议的那样,还是认证? 如果我错了,请纠正我,但我一直认为授权是允许某人访问某个资源的行为,而OAuth似乎没有任何实际允许用户访问给定资源的实现。OAuth实现所讨论的都是为用户提供一个令牌(签名的,有时是加密的)。然后,每次调用都会将该令牌传递到后端服务endpoint,在后端服务endpoint上检查该令牌的有效性,这也不是OAuth的
我有一个已经完成的j2ee(jsf、cdi、jpa)应用程序,它完美地使用了ApacheShiro,它工作得非常好,我喜欢Shiro注释(hasRole、hasPermission等)。 现在,该项目还必须能够通过SiteMinder进行身份验证,我的问题是: 我如何设置一个领域来处理SiteMinder身份验证而不丢失Shiro授权(似乎SiteMinder会在HTTP头中给我用户名和Rolen
问题内容: 我一直在努力用Spring-Security 正确实现Stomp(websocket) 身份验证 和 授权 。 为了后代,我将回答我自己的问题以提供指导。 问题 Spring WebSocket文档(用于身份验证)看起来不清楚ATM(IMHO)。而且我不明白如何正确处理 身份验证 和 授权 。 我想要的是 使用登录名/密码对用户进行身份验证。 防止匿名用户通过WebSocket连接。