Azure Active Directory令牌URL路径?

时间:2019-01-22 15:51:08

标签: azure asp.net-web-api azure-active-directory

我有一个单页应用程序,该应用程序与我尝试使用Azure Active Directory保护的Web API进行通信。在使用带有本地帐户和OAuth2的本地SQL数据库之前,我已经完成了此操作,但是我从未使用Azure Active Directory完成它。

我在Visual Studio 2017中创建了一个新的MVC Web API项目,并将身份验证部分设置为“云-单一组织”,然后输入了相应的域。我在创建过程中登录了API。我提供的登录信息已输入到Web.Config文件中。

<appSettings>
  <add key="ida:Tenant" value="domain.net" />
  <add key="ida:Audience" value="domain.net/WebAPI" />
  <add key="ida:ClientID" value="XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX" />
  <add key="ida:Password" value="XXXXXXXXXXXXXXXXXXXXXXXXXXX" />
 </appSettings>

然后在新的Startup.Auth.cs文件中,我具有以下内容:

public partial class Startup
{
    // For more information on configuring authentication, please visit https://go.microsoft.com/fwlink/?LinkId=301864
    public void ConfigureAuth(IAppBuilder app)
    {
        app.UseWindowsAzureActiveDirectoryBearerAuthentication(
            new WindowsAzureActiveDirectoryBearerAuthenticationOptions
            {
                Tenant = ConfigurationManager.AppSettings["ida:Tenant"],
                TokenValidationParameters = new TokenValidationParameters {
                     ValidAudience = ConfigurationManager.AppSettings["ida:Audience"]
                },
            });
    }
}

我看不到可以在其中启动登录的路径。在我的原始项目中,是/ Token路径,如下所示从我的原始Startup.Auth.cs文件中显示。

PublicClientId = "self";
        OAuthOptions = new OAuthAuthorizationServerOptions
        {
            TokenEndpointPath = new PathString("/Token"),
            Provider = new ApplicationOAuthProvider(PublicClientId),
            AuthorizeEndpointPath = new PathString("/api/Account/ExternalLogin"),
            AccessTokenExpireTimeSpan = TimeSpan.FromHours(12),
            RefreshTokenProvider = new ApplicationRefreshTokenProvider(),
        };

在我的原始项目中,为了启动登录,我将在Ajax调用中使用/ Token并传递用户名和密码。

$.ajax({
    url: url.getURL() + '/token',
    method: 'POST',
    data: {
        username: username,
        password: password,
        grant_type: 'password'
    },

如何在使用Azure Active Directory的新Web API中启动登录?我在Startup.Auth.cs文件中没有看到/ token路径或类似的东西。这是我必须添加的东西吗,还是项目设置为自动使用我在首次创建项目时输入的登录凭据?

1 个答案:

答案 0 :(得分:0)

将Web API绑定到Azure Active Directory中时,没有可调用的“ /令牌” URL来启动登录。您必须将用户定向到以下网站:

http://login.microsoftonline.com/ {domain} /oauth2/v2.0/authorize?client_id= {client_id}&response_type = id_token&scope = openid&response_mode = fragment&state = 12345&nonce = 678910

确保您输入的应用程序的实际域和client_id变量在Azure中列出。另外,在Azure中,确保设置了“回复URL”。登录完成后,API将重定向回您的站点。这确实适用于localhost。