簡體   English   中英

ASP.Net Azure OpenId集成

[英]ASP.Net Azure OpenId integration

我正在嘗試創建一個使用Azure AD進行SSO身份驗證的項目。 應用程序的蔚藍面已配置完畢,我可以使用以下代碼進行SAML身份驗證:

app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);

app.UseCookieAuthentication(new CookieAuthenticationOptions());

app.UseWsFederationAuthentication(
    new WsFederationAuthenticationOptions
    {
        Wtrealm = realm,
        MetadataAddress = adfsMetadata
    });

通過這種方式配置,該網站可以很好地處理網頁,但是我還需要能夠具有從本地客戶端調用的API調用。 我想使用JWT對本機應用程序進行身份驗證,並找到有關如何設置為JWT提供服務的獨立本機應用程序的文檔。 我在此處找到有關使用“ 添加連接的服務”向空白站點添加身份驗證的說明,並且似乎將站點配置為在創建的Startup.Auth.cs文件中使用以下代碼來使用OpenId:

IdentityModelEventSource.ShowPII = true;

app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);

app.UseCookieAuthentication(new CookieAuthenticationOptions());

app.UseOpenIdConnectAuthentication(
    new OpenIdConnectAuthenticationOptions
    {
        ClientId = clientId,
        Authority = Authority,
        PostLogoutRedirectUri = postLogoutRedirectUri
    });

不幸的是,當我運行新配置的空白站點時,出現以下錯誤:

IDX10501:簽名驗證失敗。 無法匹配密鑰:'Vxa8HJ8gNB1XfxYnIDHBl2YuSFc',令牌:'{“ typ”:“ JWT”,“ alg”:“ RS256”,“ x5t”:“ Vxa8HJ8gNB1XfxYnIDHBl2YuSFc”,“ kid”:“ XxY”“ 8” :“ c13f71a0-e658-4432-a61e-24140f2b5890”,“ iss”:“ https://sts.windows.net/8948afa6-51e3-4041-8303-5688ba9c8135/ ”,“ iat”:1542235664,“ nbf”: 1542235664, “EXP”:1542239564 “AIO”: “ASQA2 / 8JAAAA6 + NtWgTWs4mQi7gcoqDJMWDjmQtgxL79oC3U112 + XJI =”,...

我已經查看了我的應用程序的OpenId元數據,並且密鑰Vxa8HJ8gNB1XfxYnIDHBl2YuSFc不在任何地方。 我錯過了一些簡單的事情嗎?

編輯


看起來配置的權限是

https://login.microsoftonline.com/{tenant}

我與Microsoft開了一個案子,他們的一名開發人員幫助發現問題出在OpenId和Enterprise應用程序上。 當我創建非企業應用程序(Web / API)時,我能夠使網站正確地進行身份驗證。 我通過從頭開始創建企業應用程序並比較Web / API應用程序和企業應用程序之間的瀏覽器行為來測試了這一點。 該問題僅針對企業應用程序出現。 我不確定有什么區別,但這是微軟的立場。 此外,它僅顯示OpenId。 如上所述,我能夠使其與SAML一起使用。 我不清楚Web / API應用程序與企業應用程序之間的區別是什么。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM