2017-04-18 44 views
1

我正尝试使用在安全模式下运行的WPF应用程序打开NIFI。 分析后发现只有打开受保护的网址的基本授权只有在下面的链接给出的选项。 https://social.msdn.microsoft.com/Forums/windows/en-US/21674c95-7389-46e2-abc3-7019556e2eb0/basic-authentication-in-webbrowser-control?forum=winforms无法在安全模式下从wpf应用程序打开NIFI URL

这不适用于NIFI,我们在这里使用“不记名令牌”。

public static void NavigateWithAuthorization(WebBrowser browser, Uri uri) 
    { 
     byte[] authData = System.Text.Encoding.UTF8.GetBytes("user:password"); 
     string authHeader = "Authorization: Bearer " + Convert.ToBase64String(authData) + "\r\n" + "User-Agent: MyUserAgent\r\n"; 
     browser.Navigate(uri, "", null, authHeader); 
    } 

回答

0

如果您使用的是C#HttpClient,你需要添加页眉与你所有后续请求第一次调用(如注意到Basic Authentication hereOAuth here)接收的令牌。

httpClient.DefaultRequestHeaders.Authorization = 
    new AuthenticationHeaderValue("Bearer", base64EncodedJWTReceivedFromNiFi); 

如果这还不足以解决您的问题,请发表您尝试使用完整的代码和您收到的实际错误。

+0

嗨,安迪,我没有在这里使用HttpClient。请在上面找到代码详情。 – kayal

+0

这是因为NiFi不接受基本身份验证('username:password'的Base 64)作为有效的身份验证机制。 NiFi支持[三种认证机制](https://nifi.apache.org/docs/nifi-docs/html/administration-guide.html#user-authentication)开箱即用(可以用自定义代码扩展) - 客户端证书,LDAP(S)和Kerberos。如果您使用的是客户端证书,则每个请求都必须有证书。对于LDAP或Kerberos,使用用户名和密码的'POST'到'/ access/token'会返回一个JWT令牌。 – Andy

+0

有关更多详细信息,请参阅[REST API - 访问](https://nifi.apache.org/docs/nifi-docs/rest-api/index.html)。与往常一样,使用浏览器的开发工具来监控NiFi所做的请求是了解和验证您希望从不同客户端获得的API调用的最佳方式。 – Andy

相关问题