标签: adal

"Microsoft.IdentityModel.Clients.ActiveDirectory.Authenticator"的类型初始值设定项引发异常

使用OpenId Connect中间件(dnxcore50; 1.0.0-beta6-*coreclr x64)使用AAD SSO ...

app.UseCookieAuthentication(options => { options.AutomaticAuthentication = true; });
app.UseOpenIdConnectAuthentication(options => {
    options.ClientId = ClientId;
    options.Authority = Authority;
    options.PostLogoutRedirectUri = PostLogoutRedirectUri;
    options.AutomaticAuthentication = true;
    options.SecurityTokenValidators = new[] { new UnsafeJwtSecurityTokenHandler() };
    options.Notifications = new OpenIdConnectAuthenticationNotifications {
        AuthenticationFailed = OnAuthenticationFailed,
        AuthorizationCodeReceived = OnAuthorizationCodeReceived
    };
});
Run Code Online (Sandbox Code Playgroud)

OnAuthorizationCodeReceived,以这种方式获取Graph API的上下文...

string userObjectId = notification.AuthenticationTicket.Principal.FindFirst("http://schemas.microsoft.com/identity/claims/objectidentifier").Value;
ClientCredential credential = new ClientCredential(ClientId, AppKey);
AuthenticationContext authContext = new AuthenticationContext(Authority);
AuthenticationResult result = await authContext.AcquireTokenByAuthorizationCodeAsync(notification.Code, new Uri(BaseAddress), credential, "https://graph.windows.net");
Run Code Online (Sandbox Code Playgroud)

与dnx451 1.0.0-beta4 clr x86配合使用但对于dnxcore50 …

adal

2
推荐指数
1
解决办法
3803
查看次数

将 Passport-azure-ad OIDCStrategy 与 Passportjs 一起使用时出现问题

我正在尝试使用 Passport-azure-ad 来验证用户身份。该应用程序显示常见的登录屏幕,但当我点击“登录”时,浏览器窗口变为空白并显示一个指示其工作的微调器。与此同时,我的服务器正在接收发送到我的回调端点的连续 POST 请求流。

在此期间,我的护照功能(验证、序列化用户和反序列化用户)都没有被调用。

这是我的策略定义:

    passport.use("azure", new azureStrategy({
    identityMetadata: 'https://login.microsoftonline.com/common/.well-known/openid-configuration',
    clientID: "*************************",
    responseType: 'code id_token',
    issuer: "https://sts.windows.net/********************/",
    responseMode: 'form_post',
    redirectUrl: "http://localhost:5055/auth/azure/callback",
    allowHttpForRedirectUrl: true,
    clientSecret: "**********************************"
}, function(iss, sub, profile, accessToken, refreshToken, done) {
    console.log("ID TOken: ", profile.oid); //Never gets called
    console.log("User" ,profile) //Never gets called
    done(null, profile);
}));

passport.serializeUser(function(user, done){
    console.log("serialize: ", user)  //Never gets called
    done(null, user);
})

passport.deserializeUser((user, done) => {
    console.log("deserialize: ", user)  //never gets called
    done(null, user);
})   
Run Code Online (Sandbox Code Playgroud)

这是我的路线定义:

app.get("/auth/azure", passport.authenticate('azure', {failureRedirect: '/'}))

app.post("/auth/azure/callback", …
Run Code Online (Sandbox Code Playgroud)

node.js adal passport.js passport-azure-ad

2
推荐指数
1
解决办法
2624
查看次数

如何传输或共享在 Microsoft 应用程序注册门户中创建的应用程序。我正在使用 Azure Active Directory 和 v2.0 端点

我正在使用 Passport-azure-ad 库对人们进入我们的应用程序进行身份验证。我们正在使用 v2.0 端点。我在 Microsoft 应用程序注册门户中创建了多个应用程序。并且有很多重定向网址,因为我们有很多不同环境的应用程序。它是在我的微软员工帐户下注册的。现在我需要将所有权转让给另一个开发人员。我该怎么做?我需要在另一个帐户中重新创建所有这些应用程序吗?我假设这将创建一个新的应用程序 ID,因此将再次请求所有用户的权限。有没有办法转移所有权而不再次重新创建所有应用程序?

azure-active-directory adal

2
推荐指数
1
解决办法
258
查看次数

Azure AD + Graph API:如何在新权限后重新同意?

我在 Azure AD 中有一个应用程序注册,它为它设置了一些 Graph API 委派权限。

该应用程序只是 SharePoint 中的一个页面,它进行 Graph 调用,使用 ADAL.js 库进行身份验证。

我现在想在页面上对新的 Graph API 端点进行额外的 Graph 调用,因此我需要为应用程序分配额外的权限。我在 Azure AD 中设置了此权限并保存。但是,从不要求访问 SharePoint 页面的用户重新同意新权限,因此新 Graph 调用失败并显示 401 Unauthorized 消息。

我已经尝试了许多不同的端点和权限,并且我确定我在应用程序中设置了正确的权限。

当应用程序权限更改时,如何自动为用户显示同意对话框?

管理员同意不是一种选择。

azure azure-active-directory adal azure-ad-graph-api microsoft-graph-api

2
推荐指数
1
解决办法
1030
查看次数

使用 openid 从 B2C Azure Active Directory 获取刷新令牌的范围内的“offline_access”值不起作用

我正在尝试使用 Azure B2C Active Directory 实施身份验证。一切正常,我可以使用特定策略登录并从 B2C 活动目录中获取 access_token。但是,当我尝试在登录 url 的范围内传递值“offline_access”以获取刷新令牌时,它返回一条错误消息,我无法登录。我正在使用 Angular 5 的 ADAL(Azure 目录身份验证库)对 Azure AD 进行身份验证。

这是我的角度 ADAL 配置代码的图像

这是我尝试在 url 范围内传递“offline_access”值时遇到的问题图像

完整的错误信息:

http://localhost:4200/dashboard#error=invalid_request&error_description=AADB2C90012%253a+The+scope+ 'openid+offline_access'+provided+in+request+is+not+supported.%0D%0ACorrelation+ID%253a+05f9f8b0- a8a0-4fdc-9cca-50a4e81a929c%0D%0ATimestamp%253a+2018-01-17+04%253a35%253a36Z%0D%0A&state=a878cc7f-6d87-47e6-a095

我在这里错过了什么吗?或者有另一种方法来获取刷新令牌?

openid adal azure-ad-b2c angular5

2
推荐指数
1
解决办法
1390
查看次数

如何在 Azure AD 重定向 URI 中添加带参数的回复 URI?

当我使用参数导航到 URL 时http://localhost:4200/meal/3(URL 中的数字 3 是参数),我收到一条错误消息,显示“请求中指定的回复 url 与为应用程序配置的回复 url 不匹配”。

但是当我尝试访问没有参数的 URL 时,http://localhost:4200它工作正常,没有错误。

我尝试使用“Azure AD 重定向 URI”中的参数配置 URL,但“Azure AD 重定向 URI”中的 URL 似乎需要具有硬编码参数值的 URL,而这不起作用我有数百个带参数的 URL。

我尝试在 Azure AD 重定向 URI 中配置重定向 URL 以匹配任何参数值。 http://localhost:4200/meal/{id}但没有成功。

我想找到一种在 Azure AD 重定向 URI 中配置 URL 的方法,以便它们可以匹配我的应用程序 URLS 参数,而无需在 URL 中添加硬编码值

redirect azure oauth-2.0 azure-active-directory adal

2
推荐指数
1
解决办法
8111
查看次数

在 C# 中使用 JSONWebKey 或 JSONWebKeySet 解密 JSONWebToken

我在互联网上尝试了各种解决方案,但所有解决方案都以不同的方式出现问题。我写这封信是希望 StackOverflow 上熟悉类似工作流程的人或来自 Microsoft.IdentityModel.JsonWebTokens 团队的人能够介入提供帮助。

我想要做的是解密由 JSONWebKey (JWK) 加密的 OAuth 访问令牌,以便我可以读取声明数据。现在我陷入了解密步骤。我在 OS X 上使用 C# 和 Visual Studio for Mac。我尝试过的方法包括使用旧的 JWT 库并尝试通过迂回方式创建各种 RSA 对象。但是,我想做的是如下所示:

using System;
using System.Linq;
using Microsoft.IdentityModel.JsonWebTokens;
using Microsoft.IdentityModel.Tokens;
using System.Security.Cryptography;
using Microsoft.AspNetCore.WebUtilities;

namespace jwtdecoder {
    class Program {
        static void Main(string[] args) {
            
            /* Exact string of a token retrieved from the IDP/OAuth server. */
            String token = "BASE64EncodedTokenGoesHere";

            /* Trust me that we have a valid JWKS string here that has all the properties mentioned …
Run Code Online (Sandbox Code Playgroud)

c# rsa jwt adal

2
推荐指数
1
解决办法
4892
查看次数

如何从azure-active-directory获取具有特定组声明的令牌

我有一个客户端.Net应用程序,它使用ADAL访问在azure上运行的Web API应用程序.

服务器具有自定义代码,用于验证用户是否属于特定安全组.

问题是我的用户属于太多组,导致AAD根本不包括令牌中的组列表.

因此,我的自定义代码再次调用AAD Graph API来验证用户是否属于该组 - 除了客户端为获取身份验证令牌而生成的用户.

有没有办法告诉AAD只返回组声明中的这一个特定组(以便AAD将其包含在令牌中)?

任何其他想法(除了我目前没有的缓存)将阻止我进行第二次通话将不胜感激.

oauth azure jwt azure-active-directory adal

1
推荐指数
1
解决办法
823
查看次数

无法使用ADAL for ASP.NET MVC上的Office 365 REST API对用户进行静默身份验证

所以我正在尝试为我们的办公室身份验证实现持久性令牌,这样用户每次进入新会话时都不必登录办公室.我目前用于验证用户的代码如下.

string authority = "https://login.microsoftonline.com/common";
var tokenCache = new ADALTokenCache(User.Identity.GetUserId());
AuthenticationContext authContext = new AuthenticationContext(authority, tokenCache );
var token = authContext.AcquireTokenSilentAsync(scopes, clientId, new UserIdentifier(userId, UserIdentifierType.RequiredDisplayableId));
Run Code Online (Sandbox Code Playgroud)

但到目前为止我尝试过的所有内容都给出了以下错误 在此输入图像描述

例外情况是: "Failed to acquire token silently. Call method AcquireToken"

首先用于获取令牌的方法如下

string authority = "https://login.microsoftonline.com/common";
var fileCache = new ADALTokenCache(User.Identity.GetUserId());
AuthenticationContext authContext = new AuthenticationContext(authority, fileCache);
var authResult = await authContext.AcquireTokenByAuthorizationCodeAsync(
                authCode, redirectUri, credential, scopes);
Run Code Online (Sandbox Code Playgroud)

我使用的令牌缓存是一个db实现,我从一个我再也找不到的教程中做出来,如果我看到db我可以看到新的令牌在AcquireTokenByAuthorizationCodeAsync被调用时被插入到db中.

更新:
这是我在调用时来自authResult的结果AcquireTokenByAuthorizationCodeAsync 在此输入图像描述

我已将Virbonet的答案标记为解决方案,但我没有修复它,但他确实向我解释了我哪里出错了

c# asp.net office365 adal office365api

1
推荐指数
1
解决办法
2686
查看次数

如何在office 365 REST API中发送邮件?

我找到了有关如何使用Office 365 rest API发送电子邮件的以下文档.

这是关于doucmentation的例子:

POST https://outlook.office.com/api/v2.0/me/sendmail

{
  "Message": {
    "Subject": "Meet for lunch?",
    "Body": {
      "ContentType": "Text",
      "Content": "The new cafeteria is open."
    },
    "ToRecipients": [
      {
        "EmailAddress": {
          "Address": "garthf@a830edad9050849NDA1.onmicrosoft.com"
        }
      }
    ],
    "Attachments": [
      {
        "@odata.type": "#Microsoft.OutlookServices.FileAttachment",
        "Name": "menu.txt",
        "ContentBytes": "bWFjIGFuZCBjaGVlc2UgdG9kYXk="
      }
    ]
  },
  "SaveToSentItems": "false"
}
Run Code Online (Sandbox Code Playgroud)

如果用户授权应用程序代表它执行操作,则此方法正常.但是,我使用客户端信任来构建一个守护程序应用程序,代表给定租户中的所有用户,因此"POST https://outlook.office.com/api/v2.0/me/sendmail "无法正常工作因为它引用了"我",无法分辨哪个用户正在发送电子邮件.

如果你可以提供示例示例,我会谨慎行事.仅供参考:我使用的是Java,但您的答案不一定是Java.

exchange-server azure-active-directory adal outlook-restapi office365api

1
推荐指数
1
解决办法
3459
查看次数

验证Azure广告访问令牌时签名无效,但id令牌有效

使用jwt.io验证我的Azure广告访问令牌时,我得到了无效签名。但是,我的ID令牌可以很好地验证!


在验证Azure广告访问令牌

https://nicksnettravels.builttoroam.com/post/2017/01/24/Verifying-Azure-Active-Directory-JWT-Tokens.aspx时,我已经看到并尝试了无效签名中建议的解决方案,
但是都不适合我的访问令牌。

访问和ID令牌是通过Adal.js生成的:

    var endpoints = {
        "https://graph.windows.net": "https://graph.windows.net"
    };
    var configOptions = {
        tenant: "<ad>.onmicrosoft.com", // Optional by default, it sends common
        clientId: "<app ID from azure portal>",
        postLogoutRedirectUri: window.location.origin,
        endpoints: endpoints,
    }
    window.authContext = new AuthenticationContext(configOptions);
Run Code Online (Sandbox Code Playgroud)

为什么我可以验证我的ID令牌,但不能验证我的访问令牌?

validation access-token oauth-2.0 azure-active-directory adal

1
推荐指数
4
解决办法
4488
查看次数

将身份验证令牌添加到AJAX调用,以获取使用Azure Active Directory身份验证保护的Web API

我有一个基于JavaScript的基于JavaScript的网页.我需要在https://XYZ.azurewebsites.net上调用我的Web API,该API 使用Azure Active Directory身份验证进行保护.

为此,我已将ADAL.js添加到我的网站,在AAD中将我的网站/ webapp注册为Native Client.我不确定无声地获取身份验证令牌的最少量代码.

在vanilla JavaScript中获取身份验证令牌需要做的最小步骤是什么?

注意:我在GitHub上的Azure AD身份验证中经历了大量示例.但是他们都建议克隆repo并替换Audience,Tenants等的值.我需要的只是一个简单的vanilla JS函数来做同样的事情而没有这些样本中的所有膨胀代码.

javascript active-directory azure-active-directory adal adal.js

-2
推荐指数
1
解决办法
6749
查看次数