我对角度样板和社交登录的实现方式有疑问。从我收集到的信息中,我们可以绕过例如在“ AuthConfigurer.cs”中定义的默认授权。
`if (bool.Parse(configuration["Authentication:JwtBearer:IsEnabled"]))
{
services.AddAuthentication(options => {
options.DefaultAuthenticateScheme = "JwtBearer";
options.DefaultChallengeScheme = "JwtBearer";
}).AddJwtBearer("JwtBearer", options => .........
{`
然后尝试登录时,将使用用户名和密码验证用户,以便我们返回带有承载令牌和用户ID的结果模型。
public async Task<AuthenticateResultModel> Authenticate([FromBody] AuthenticateModel model)
{
var loginResult = await GetLoginResultAsync(
model.UserNameOrEmailAddress,
model.Password,
GetTenancyNameOrNull()
);
var accessToken = CreateAccessToken(CreateJwtClaims(loginResult.Identity));
return new AuthenticateResultModel
{
AccessToken = accessToken,
EncryptedAccessToken = GetEncrpyedAccessToken(accessToken),
ExpireInSeconds = (int)_configuration.Expiration.TotalSeconds,
UserId = loginResult.User.Id
};
}
看起来很简单,但是在查看我在论坛上发现的示例和建议时,我们可以使用多种方法来处理身份验证。
if (bool.Parse(configuration["Authentication:Microsoft:IsEnabled"]))
services.AddAuthentication().AddGoogle(googleOptions =>
{
microsoftOptions.ClientId = configuration["Authentication:Microsoft:ClientId"];
microsoftOptions.ClientSecret = configuration["Authentication:Microsoft:ClientSecret"];
});
所以我真正关心的还是我的问题是,如果我们绕过不记名令牌并将其更改为Microsoft之类的东西,然后我们对用户进行身份验证,那么接下来该怎么办?
我们如何在此经过身份验证的“用户”上为各个页面设置权限?
我们可以在没有拥有权限的真实样板用户的情况下设置授权吗?我们如何访问我们网站的一部分?