关键词:
【中文标题】带有 JWT Bearer 令牌和 ASP.NET Core 2 WebApi 的 Azure AD 用户信息【英文标题】:Azure AD User info with JWT Bearer token and ASP.NET Core 2 WebApi 【发布时间】:2018-03-15 12:32:49 【问题描述】:我找到了一个tutorial,我可以在其中使用 Azure AD 凭据登录我的应用程序。
在我的前端中,我使用的是 Xamarin.Forms。 在我的后端,我使用 ASP.NET Core 2.0 WebApi。
后端:
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
if (env.IsDevelopment())
app.UseDeveloperExceptionPage();
app.UseAuthentication();
app.UseMvc();
public void ConfigureServices(IServiceCollection services)
services.AddMvc();
services.AddAuthentication(o =>
o.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
o.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
).AddJwtBearer(options =>
options.Authority = String.Format(Configuration["AzureAd:AadInstance"], Configuration["AzureAD:Tenant"]);
options.Audience = Configuration["AzureAd:Audience"];
);
这很简单。
在我的前端,我正在填写我的凭据并要求一个 access_token。
"token_type": "Bearer",
"scope": "user_impersonation",
"expires_in": "3600",
"ext_expires_in": "0",
"expires_on": "1507104075",
"not_before": "1507100175",
"resource": "my_resource",
"access_token": "my_access_token",
"refresh_token": "my_refresh_token"
我用bearer my_access_token
设置的Authorization 填写标题。
我的 Api 知道我的所有信息,因为它会自动使用我的 access_token 中的信息设置声明。此信息由 Azure AD 提供。 (全名,名,姓,...)
但是如何在我的前端获取这些信息?
【问题讨论】:
【参考方案1】:您可能想查看 GitHub 上的 active-directory-dotnet-native-desktop 示例。
我展示了如何在桌面应用程序中使用 ADAL.NET 来获取服务令牌。您需要针对您的 Xamarin 表单客户端进行调整,但就身份验证而言,原理是相同的。 它还包含一个服务,您可以用自己的服务替换它,并通过将资源 ID 更改为使用 ASP.NET 向导创建的应用程序之一来获取 Web API 的令牌(您可以在 Azure 中找到它)示例的 readme.md 中描述的门户)
这个想法是您首先使用 ADAL.Net line 92 of TodoListClient/MainWindow.xaml.cs 获得一个令牌
result = await authContext.AcquireTokenAsync(todoListResourceId, clientId, redirectUri, ...)
然后您将其用作不记名令牌line 121
httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", result.AccessToken);
【讨论】:
【参考方案2】:如果您需要的所有信息都包含在访问令牌中,您只需在客户端解码访问令牌即可。访问令牌是一个 JWT,很容易研究代码示例来解码访问令牌,如下线程:
How to decode JWT Token?
Decoding and verifying JWT token using System.IdentityModel.Tokens.Jwt
如果您还需要更多用户信息,您可以刷新 Microsoft Graph 的访问令牌,并调用 Microsoft Graph 的me
端点(参考here)。以下是关于如何通过刷新令牌刷新访问令牌的文档:
Refreshing the access tokens
【讨论】:
从 ASP.NET vNext beta5 移动到 beta7 后 JWT Bearer 令牌身份验证错误
】从ASP.NETvNextbeta5移动到beta7后JWTBearer令牌身份验证错误【英文标题】:JWTBearertokenauthenticationerroraftermovingfromASP.NETvNextbeta5tobeta7【发布时间】:2015-12-1511:06:02【问题描述】:我从beta5迁移到beta7ASP.NETvNext,当我尝试使用无效的JWT令... 查看详情
带有 ASP.NET Identity 3 的 JWT 不记名令牌
】带有ASP.NETIdentity3的JWT不记名令牌【英文标题】:JWTbearertokensw/ASP.NETIdentity3【发布时间】:2016-03-0601:07:45【问题描述】:基于ShaunLuttin在https://***.com/a/30857524的出色示例,我能够使用该代码来生成和使用不记名令牌。小改动是为... 查看详情
ASP.NET Core JWT 和声明
...牌时,我添加了一些声明,其中一些可以是自定义的。当带有JWT令牌的请求从客户端发送到API时会发生什么。User.Claims如何填写 查看详情
Asp.Net Core、JWT 和 OpenIdConnectServer
...大量误解而流血工作后,我陷入了困境。我的任务是制作带有两个控制器(受保护和不受保护)的WebApi服务器。我应该从服务器授予令牌并能够获得受保护 查看详情
ASP.Net Core 3.0 JWT Bearer Token 没有 SecurityTokenValidator 可用
】ASP.NetCore3.0JWTBearerToken没有SecurityTokenValidator可用【英文标题】:ASP.NetCore3.0JWTBearerTokenNoSecurityTokenValidatoravailable【发布时间】:2019-10-1820:26:59【问题描述】:我使用ASP.NetCore3.0API和EntityFrameworkCore作为UserStorage。启动.cs:publi 查看详情
将 JWT Bearer Authentication Web API 与 Asp.Net Core 2.0 结合使用的问题
...布时间】:2018-07-1419:57:46【问题描述】:我有以下设置:带有JWT不记名身份验证的WebAPIAsp.NetCore2.0MVC处理身份并提供视图AngularJS-客户 查看详情
ASP.NET Core 和 JWT 令牌生命周期
】ASP.NETCore和JWT令牌生命周期【英文标题】:ASP.NETCoreandJWTtokenlifetime【发布时间】:2018-12-2301:11:43【问题描述】:我使用ASP.NETCore2.1.1有趣的是,只有在bothClockSkew-在Startup.csand中才考虑过期时间JwtSecurityTokenHandler.TokenLifetimeInMinutes-... 查看详情
使用 JWT Bearer 令牌进行身份验证 Swagger
...时间】:2018-08-2900:21:57【问题描述】:我们正在开发一个带有JWTBearer身份验证的.NetCore2.1WebAPI。应用程序本身将生成并分发要发送到后端的令牌。虽然我们已经启动并运行了所有内容,即我们可以从Angular发送不记名令牌并使用Pos... 查看详情
如何更改 asp.net core 1 中的令牌响应?
...义属性......结果如下:resource":"resource_server_1","token_type":"bearer","a 查看详情
如何自定义 ASP .NET Web API JWT 令牌响应?
...【发布时间】:2021-01-2818:17:13【问题描述】:我正在使用带有WebAPI的Asp.netWebform项目。我配置了基于JWT令牌的身份验证,现在我想自定义身份验证响应这是我的配置,Startup.cspublicclassStartuppublicvoidConf 查看详情
asp.net 核心中的 jwt 令牌无效
】asp.net核心中的jwt令牌无效【英文标题】:InvalidjwtTokeninasp.netcore【发布时间】:2020-11-1919:09:06【问题描述】:我正在尝试在我的Angular应用程序和ASP.net核心中使用JWT。对于初学者,我使用“邮递员”来测试我的端点。在我的API... 查看详情
使用 ASP.NET 标识和 JWT 令牌的 Azure 函数身份验证
】使用ASP.NET标识和JWT令牌的Azure函数身份验证【英文标题】:AzurefunctionsauthenticationwithASP.NETIdentityandJWTtoken【发布时间】:2018-07-2021:26:30【问题描述】:我正在开发一个新的开发堆栈,我计划使用Azurefunctions实现无服务器。我认为... 查看详情
使用 JWT 令牌的 ASP.NET Core 网站到 WebApi 身份验证
...它。我网站中的AccountController调用另一个ASP.NETCoreWebApi(带有[AllowAnonym 查看详情
使用 ADFS 的 JWT Bearer 身份验证将 ASP.NET Framework 迁移到 ASP.NET Core 3.1
】使用ADFS的JWTBearer身份验证将ASP.NETFramework迁移到ASP.NETCore3.1【英文标题】:MigrateASP.NETFrameworktoASP.NETCore3.1withJWTBearerauthenticationfromADFS【发布时间】:2020-05-2522:31:21【问题描述】:ASP.NET框架我们有一个现有的ASP.NETFramework网站,它... 查看详情
ASP.NET Core 中的 Jwt 令牌身份验证
】ASP.NETCore中的Jwt令牌身份验证【英文标题】:JwttokenauthenticationinASP.NETCore【发布时间】:2021-12-1711:55:34【问题描述】:我正在构建一个ASP.NETCoreWeb应用程序和Angular,我想使用基于令牌的身份验证来保护它。我对身份验证机制相... 查看详情
ASP.net Core 2.0 JWT 令牌刷新
】ASP.netCore2.0JWT令牌刷新【英文标题】:ASP.netCore2.0JWTTokenRefresh【发布时间】:2018-03-3007:54:24【问题描述】:我已经实现了JWTBearerAuth和IdentityCookieAuth,一个用于UI,另一个用于.NETCore2.0项目中的RESTAPI。到目前为止,一切都适用于JW... 查看详情
通过 Auth0 React 和 ASP.net 核心授权然后使用 JWT 令牌
】通过Auth0React和ASP.net核心授权然后使用JWT令牌【英文标题】:AuthorizingandthenusingJWTTokenwithAuth0React&ASP.netcore【发布时间】:2020-04-2822:04:59【问题描述】:我正在构建一个反应应用程序,使用Auth0作为我的oauth身份验证并使用ASP.N... 查看详情
我们可以在 Asp.NET Core 中销毁/无效 JWT 令牌吗?
】我们可以在Asp.NETCore中销毁/无效JWT令牌吗?【英文标题】:Couldwedestroy/invalidateJWTtokeninAsp.NETCore?【发布时间】:2018-01-2616:09:01【问题描述】:我使用ASP.NETCore和ASP.NETCoreIdentity来生成JWT令牌。在客户端,我的React(SPA)应用调用API创... 查看详情