Web services Azure广告登录应用程序+;azure之外的远程Web服务/api

Web services Azure广告登录应用程序+;azure之外的远程Web服务/api,web-services,azure,azure-active-directory,adal,Web Services,Azure,Azure Active Directory,Adal,嗨,我正在创建一个cordova应用程序,它使用Azure AD对我的用户进行身份验证。 我在Azure之外有一个webservice/api——这是应用程序获取其内容以显示的地方 我想在访问我的Web服务之前检查我的用户Azure AD登录 到目前为止,我正在我的应用程序中使用Azure AD对我的用户进行身份验证,如果用户经过身份验证,我的应用程序将向我的Web服务发送数据请求。 但我想确保只有在我的Azure广告中拥有活动登录名的用户才能从我的Web服务检索数据 所以现在,只要知道正确的u

嗨,我正在创建一个cordova应用程序,它使用Azure AD对我的用户进行身份验证。 我在Azure之外有一个webservice/api——这是应用程序获取其内容以显示的地方

我想在访问我的Web服务之前检查我的用户Azure AD登录

到目前为止,我正在我的应用程序中使用Azure AD对我的用户进行身份验证,如果用户经过身份验证,我的应用程序将向我的Web服务发送数据请求。 但我想确保只有在我的Azure广告中拥有活动登录名的用户才能从我的Web服务检索数据

所以现在,只要知道正确的url,任何人都可以访问我的Web服务。 如何保护我的Web服务


azure中是否有可以检查用户访问令牌是否有效的端点?

azure AD没有用于令牌验证的端点(也称为令牌内省端点)

总的来说,你说的是教科书上的场景

针对此场景,Azure AD遵循的方法是让您的web API验证令牌本身,这可以通过以下方式实现:

  • [首选]使用进行令牌验证的库
  • 或者自己实现令牌验证。请注意,这是一种非常容易出错且有风险的方法
ASP.Net和Node.js都有库,可以进一步促进第一种方法

用于ASP.Net,从以下网址获得:

用于Node.js,也可从以下网址获得:

app.UseWindowsAzureActiveDirectoryBearerAuthentication(
    new WindowsAzureActiveDirectoryBearerAuthenticationOptions
    {
        Audience = clientID,
        Tenant = tenant
    });
var passport = require('passport');
var BearerStrategy = require('passport-azure-ad').BearerStrategy;

var options = {
// The URL of the metadata document for your app. We will put the keys for token validation from the URL found in the jwks_uri tag of the in the metadata.
  identityMetadata: config.creds.identityMetadata,
  clientID: config.creds.clientID,
  audience: config.creds.audience
};

var bearerStrategy = new BearerStrategy(options,
  function(token, done) {
    // Post-validation code
  }
);

passport.use(bearerStrategy);