dotnetcore中的服务结构客户端身份验证UserPasswordCredential无法正常工作

时间:2018-02-07 14:41:31

标签: asp.net-core .net-core azure-service-fabric

我在aspnetcore(dotnetcore2.0)应用程序中构建小型服务结构维护,但现在还没有认识到UserPasswordCredential类。从here开始,它就像他们所说的那样。有了这个我需要转换我以前的代码,以便我可以创建一个有效的FabricClient。我如何转换GetAccessToken()方法?

    private static FabricClient CreateSecuredFabricClient()
    {
        try
        {
            var claimsCredentials = new ClaimsCredentials();
            claimsCredentials.ServerThumbprints.Add(_sslThumbprint);

            var fc = new FabricClient(claimsCredentials, _clusterConnectionString);

            fc.ClaimsRetrieval += (o, e) =>
            {
                var token = GetAccessToken(e.AzureActiveDirectoryMetadata);
                return token.Result.AccessToken;
            };

            return fc;
        }
        catch (FabricException fex)
        {
            Console.WriteLine("Connect failed: {0}", fex.InnerException.Message);
        }
        catch (Exception e)
        {
            Console.WriteLine("Connect failed: {0}", e.Message);
        }
        return null;
    }

    private static Task<AuthenticationResult> GetAccessToken(System.Fabric.Security.AzureActiveDirectoryMetadata aad)
    {
        var authContext = new AuthenticationContext(aad.Authority);

        var authResult = authContext.AcquireTokenAsync(
            aad.ClusterApplication,
            aad.ClientApplication,
            new UserPasswordCredential(_username, _password));
        return authResult;
    }

1 个答案:

答案 0 :(得分:2)

Here's一个如何使用clientid&amp; amp; clientsecret,使用ADAL

(这也适用于aspnetcore 2.0)

基本代码:

var authContext = new AuthenticationContext(authority);
clientCredential = new ClientCredential(clientId, appKey);
result = await authContext.AcquireTokenAsync(resourceId, clientCredential);