想象一下在Windows Azure中註冊的客戶端和服務應用程序。如何對WebAPI執行無人值守的oauth/openid身份驗證?
客戶端是一個控制檯,並在本地運行無人值守(例如,在一夜之間執行測試) 該服務是受oAuth保護的WebAPI服務,通常使用Azure託管的OpenID Connect進行訪問。
客戶端如何在沒有任何用戶登錄交互的情況下對服務進行身份驗證(即應用程序使用ADAL .Net對服務進行身份驗證)?
我試過ADAL淨Daemon to WebAPI sample但它仍然會彈出一個身份驗證對話框...
謝謝!
[編輯]下面是一些代碼,顯示非常大概如何我從客戶端進行通信。所有的應用ID等都是正確的。
var authContext = new AuthenticationContext("https://login.windows.net/common");
var result = await authContext.AcquireTokenAsync(ServiceAppId, ClientCredential);
var client = new HttpClient
{
BaseAddress = new Uri("https://localhost:44301/"),
};
client.DefaultRequestHeaders.Authorization =
new AuthenticationHeaderValue(
AuthenticationHeaderScheme.Bearer,
result.AccessToken);
var response = await client.GetAsync("api/something");
var jsonString = response.Content.ReadAsStringAsync().Result;
這只是產生的登錄頁面的HTML ...
我也嘗試添加[HostAuthentication("OAuth2Bearer")]
等,以服務API控制器和OWIN啓動邏輯,但無濟於事增加,如:
app.UseWindowsAzureActiveDirectoryBearerAuthentication(
new WindowsAzureActiveDirectoryBearerAuthenticationOptions
{
TokenValidationParameters = new TokenValidationParameters
{
ValidAudience = myRealm,
},
Tenant = "mytenant.onmicrosoft.com",
AuthenticationType = BearerAuthenticationType.OAuth2Bearer,
});
你用什麼作爲你的AS? Azure AD? – BenV 2014-09-11 15:23:09
Azure AD,是的。除了這種情況,一切都很好。 – Richard 2014-09-11 21:44:38
[這個人](http://stackoverflow.com/questions/25781752/failing-to-authenticate-using-token-acquired-with-adal)也在我的後面發佈了同樣的問題。從互聯網瀏覽看,這似乎是一個經常遇到的問題,但我找不到明確的答案。 – Richard 2014-09-11 21:46:34