Tag: azure active directory

在C#REST服务中validationADAL JWT令牌

我有一个Web应用程序,它使用ADAL库通过Azure Active Directory进行身份validation。 此Web应用程序通过将ADAL标记字符串作为参数传递来调用C#REST服务。 在我的REST服务中,我想validation此令牌。 如果令牌有效,则服务将执行操作。 我搜索了很多但是找不到在我的rest服务中validationJWT令牌的方法。 你能帮帮我吗?

即使管理员已经同意,也会触发ADAL用户同意

我创建了一个使用Azure Active Directory进行身份validation的Web API。 它使用多租户AAD。 为了测试它,我还创建了一个控制台应用程序,它使用ADAL库对AAD进行身份validation,以便我可以访问我的API。 在主要的AAD租户中,一切运作良好,因为我不需要授予任何东西。 但是当从第二个租户访问应用程序时,我首先触发管理员同意流程(添加prompt=admin_consent )。 但是当我再次退出并打开应用程序时,如果我尝试使用没有管理员权限的用户登录AAD,它会尝试打开用户同意并且失败(因为用户无权允许访问AAD)。 如果我已经给予管理员同意,那么用户是否应该同意? 测试应用程序的代码是: using System; using System.Collections.Generic; using System.Linq; using System.Net.Http; using System.Security.Authentication; using System.Threading.Tasks; using System.Web; using Microsoft.IdentityModel.Clients.ActiveDirectory; using Newtonsoft.Json; namespace TestConsole { internal class Program { private const string _commonAuthority = “https://login.microsoftonline.com/common/”; private static void Main(string[] args) { ConsoleKeyInfo kinfo = Console.ReadKey(true); AuthenticationContext ac […]

一小时后,身份从持有人令牌中消失

我正在使用Azure AD与Web应用程序和Web API建立多租户解决方案。 Web应用程序使用OpenIdConnect来检索承载令牌(在Azure Redis缓存中缓存),该令牌在Angular中用于从Web api获取JSON。 在Web应用程序和Web API(在Azure AD应用程序中设置)之间使用用户模拟。 问题: 这可以正常工作大约一个小时,然后身份突然消失在web api端。 如果我刷新Web应用程序,我会看到该页面被重定向到Microsoft登录页面,但不需要执行任何操作,因为用户只是重定向回Web应用程序并且一切都有效。 据我所知,Web应用程序在失败时使用相同的承载令牌,在再次运行时刷新(相同的过期时间)。 AuthenticationContext.AcquireTokenSilent适用于这两种情况。 我试图增加很多不同的超时,但没有任何帮助。 我还在web api上禁用了除持有者令牌身份validation之外的所有身份validation。 我不明白为什么身份会消失,为什么它有助于刷新客户。 有任何想法吗? 🙂 附加信息 这是RequestContext.Principal.Identity在登录或刷新后大约一小时查找的内容(在web api上): 这是大约一个小时后,导致身份validation失败: 我尝试过的一些代码更改: 在web api HttpConfiguration中: config.SuppressDefaultHostAuthentication(); config.Filters.Add( new HostAuthenticationFilter( new WindowsAzureActiveDirectoryBearerAuthenticationOptions().AuthenticationType)); 这将未经身份validation的主体从WindowsPrincipal更改为ClaimsPrincipal,但在一小时后仍然失败。 WindowsAzureActiveDirectoryBearerAuthenticationOptions BackChannelTimeout set to 5 days. Still fails 在Web应用程序web.config中: sessionState timeout=”525600″ for RedisSessionStateProvider. Still fails 在web应用程序owin auth进程中,增加了时间跨度并增加了滑动到期时间。 仍然失败: app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType); […]

调用AddUserAsync .NET Core 2.0时出现PlatformNotSupportedexception

我正在尝试编写一些使用Graph API在Azure AD中创建用户的代码。 我开始用网上的一个例子,但现在它在添加用户时就失败了 await adClient.Users.AddUserAsync(userGraphObj); 在下面的CreateUser()方法中。 我得到的错误是 我正在使用.NET Core 2.0,在Windows 7上进行调试。谷歌搜索并发现它们为2.0提供了序列化, 但仅针对特定类型 。 我真的不在乎。 如何在代码中将用户添加到Azure AD? const String appClientID = “2be733f1-88c3-6482-8e2a-5e9631fc3a32”; const String tenant = “brazzers.onmicrosoft.com”; const String authString = “https://login.microsoftonline.com/” + tenant; const String authClientSecret = “dDdaVGee315s65ewDSWEwfdw7wq5efDNO5C3cvN4RA”; const String resAzureGraphAPI = “https://graph.windows.net”; const String serviceRootURL = resAzureGraphAPI + appClientID; private ActiveDirectoryClient GetAADClient() { […]

如何使用一个驱动器业务API从本机应用程序的azure活动目录中获取客户机密码?

我正在开发一个outlook插件。我想在其中使用一个驱动器API。我很容易得到客户端ID和客户端秘密使用API​​的一个驱动器个人帐户。但是,当我在azure活动目录中注册我的应用程序的一个驱动器业务API ,它只为我创建了一个客户端ID,但没有创建任何客户端密码。我在注册时选择了本机应用程序,因为我的应用程序是本机应用程序。我无法在没有客户端密钥的情况下对用户进行身份validation。请让我知道,如何让客户保密?提前感谢。

使用AAD对Azure API App进行身份validation时出现401错误

我有一个API应用程序,与网关主机一起工作正常,现在网关主机已被弃用我正在尝试遵循迁移指南 。 我使用2.8.1 SDK重新部署了我的服务,可以使用AAD或Microsoft帐户使用浏览器登录服务,并使用Swagger测试服务。 但是,我正在尝试让客户端使用ClientId和Secret访问该服务。 代码能够从AAD获取访问令牌,但每当我尝试访问其中一个服务资源时,我总是会收到401错误。 当我调试服务时,我在日志中看到以下内容: Microsoft.Azure.AppService.Authentication Verbose: 0 : Received request: GET https://[myService].azurewebsites.net/api/[myResource] Microsoft.Azure.AppService.Authentication Warning: 0 : JWT validation failed: IDX10214: Audience validation failed. Audiences: ‘https://[myService].azurewebsites.net/’. Did not match: validationParameters.ValidAudience: ‘[AAD ClientId]’ or validationParameters.ValidAudiences: ‘http://[myService].azurewebsites.net’. Microsoft.Azure.AppService.Authentication Information: 0 : Sending response: 401.71 Unauthorized The thread 0x3b00 has exited with code 0 (0x0). 似乎问题是提供请求的受众是https,但validParameters.ValidAudiences集合仅包含http。 […]

在ASP.NET Core 2.0中从另一个(无用户交互)授权一个应用程序服务

我在面向Internet(PubWeb)的Azure中有一个Web API应用程序,因此它可以在任何地方使用。 我创建了一个Web API(再次,在Azure中,我们称之为InWeb)。 我想要强有力的安全规则: InWeb必须仅由PubWeb使用。 这可能涉及一些网络安全 – 这是一个简单的部分(在Azure中)。 PubWeb必须以某种方式由Azure AD授权才能使用InWeb服务。 我想到了服务负责人,证书等。 但我不确定。 那么2的最佳解决方案是什么? 更新 – 这里是InWeb Core 2.0 Auth设置: public void ConfigureServices(IServiceCollection services) { services.AddAuthentication(sharedOptions => { sharedOptions.DefaultScheme = JwtBearerDefaults.AuthenticationScheme; }) .AddAzureAdBearer(options => Configuration.Bind(“AzureAd”, options)); services.AddMvc(options => { options.InputFormatters.Add(new TextPlainInputFormatter()); }); }

ADAL .Net Core nuget包不支持UserPasswordCredential

在ADAL.Net 3.x中,UserPasswordCredential在2.x的UserCredential之上引入。 但同一个UserPasswordCredential在同一个nuget包下的.Net Core中没有公开? UserCredential类只有一个属性UserName namespace Microsoft.IdentityModel.Clients.ActiveDirectory { // // Summary: // Credential used for integrated authentication on domain-joined machines. public class UserCredential { // // Summary: // Constructor to create user credential. Using this constructor would imply integrated // authentication with logged in user and it can only be used in domain joined scenarios. […]

Identityserver 4和Azure AD

我正在研究使用Identity Server 4在基于C#的MVC应用程序中进行身份validation。 我想使用存储在Azure AD中的帐户作为有效用户的来源,但文档似乎只是指Google和OpenID,并且仅提及Azure。 有没有人知道如何在与Identity Server 4一起使用Azure AD的过程中使用Azure AD的任何好的文档和/或教程?

使用图API API在Azure Active Directory中创建应用程序失败

我正在尝试使用Azure Active Directory图谱API(使用Azure GraphClient nuget包)在Azure AD中创建新应用程序。 我使用现有的AAD应用程序进行了身份validation,因此我对该目录具有写入权限。 但是,在创建新的应用程序对象时,Azure Graph API会返回以下错误: {“odata.error”: { “code”:”Request_BadRequest”, “message”: { “lang”:”en”, “value”:”Property value cannot have duplicate id or claim values.” }, “values”: [{ “item”:”PropertyName”, “value”:”None” }, { “item”:”PropertyErrorCode”, “value”:”DuplicateValue” } ] } } 它没有说明哪个属性具有重复的id或声明值 – 错误消息中有两个空格,就好像名称缺失一样。 创建Application对象的代码是这样的: var appname = “Test Application create ” + DateTime.Now.Ticks; var application = new […]