Je suis complètement perdu, toute aide serait appréciée.Sur site ADFS 3.0 OAuth2 WebApi + AngularJS
Lorsque je clique sur Login
par mon application client à partir AngularJS, je me redirigent vers:
https://adfs.dev5.local/adfs/oauth2/authorize?response_type=code&client_id=09c9a8a2-6bf1-427d-89ba-45c2c02bb9fc&resource=urn%3Awebapi%3Atest&redirect_uri=https%3A%2F%2Flocalhost%3A44326%2F&state=52e4aa10-f082-4ee6-8823-543ec6e4dce4&client-request-id=e2751f34-f7db-41f4-8c1d-4463e2dca48b&x-client-SKU=Js&x-client-Ver=1.0.15&nonce=93039780-99f6-4efc-8b1b-58aa92df9f82
Ce qui est bien et tout, je suis en mesure d'entrer dans mon email + mot de passe. Une fois que je me connecte je reçois une redirection vers:
https://localhost:44326/?code=OLCE2LJVeU2Zy2-7Q4oIMg.6Pr0vZgW1QhBAMQoUlgIKAdAsno.q4scWy_ZFQHQEz08M3gU3KJU4NhXdimZiMpgSGBQ8xKN8BLK0Qoe1m1cK5TA2WLLyA14SlnnfA4yHEp5_pTWrIOYNrvOVzNiGU0Zkie-7ae2D1_3U1E1rTmLUTprIadU4gLmo2CeMHkM8gumS285wKsRsMpXVLcavjgjyRM3XoWXSDSP96_eeMgq1osQ1M5170rrGOh_DVqKG-xYnKk5PEC7cWikaR_pxCvwvayLMV0VQIIyq1GJ3CvgK8sWFJGdY3jz247Bh8RPH9-t2_Jz3_7wyqvfvfquAY8tQxElEN1IEoPMOwVdjfBgNlZlw7vtAo79jdH1C_TRNUC5T3IrXw&state=52e4aa10-f082-4ee6-8823-543ec6e4dce4&client-request-id=e2751f34-f7db-41f4-8c1d-4463e2dca48b
C'est là où je suis confus, je ne pense pas que ça suppose de me rediriger que ..., je sais que je dois à ce poste un peu comment obtenir le jeton, mais comment? J'utilise Postman et j'ai pu obtenir le jeton d'accès, mais ce que je ne comprends pas, c'est comment mon WebAPI traduit-il cela pour accéder au token? J'utilise ADFS 3.0 sur Windows Server 2012 R2.
Configuration ADFS:
Add-ADFSRelyingPartyTrust -Name MyWebAPI -Identifier urn:webapi:test -IssuanceAuthorizationRules '=> issue(Type = "http://schemas.microsoft.com/authorization/claims/permit", Value = "true");' -IssuanceTransformRules 'c:[Type == "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress"] => issue(claim = c);'
Ajouter Client:
Add-ADFSClient -Name "client" -ClientId "09c9a8a2-6bf1-427d-89ba-45c2c02bb9fc" -RedirectUri "https://localhost:44326/"
Startup.Auth.cs:
app.UseActiveDirectoryFederationServicesBearerAuthentication(
new ActiveDirectoryFederationServicesBearerAuthenticationOptions
{
MetadataEndpoint = "https://adfs.dev5.local/FederationMetadata/2007-06/federationmetadata.xml",
TokenValidationParameters = new System.IdentityModel.Tokens.TokenValidationParameters
{
ValidAudience = ConfigurationManager.AppSettings["ida:Audience"],
}
});
webconfig pour le public:
<appSettings>
<add key="ida:Audience" value="https://localhost:44326/" />
</appSettings>
AngularJS configuration Adal:
adalProvider.init(
{
instance: 'https://adfs.dev5.local/',
tenant: 'adfs',
clientId: '09c9a8a2-6bf1-427d-89ba-45c2c02bb9fc',
redirectUri: 'https://localhost:44326/'
//cacheLocation: 'localStorage', // enable this for IE, as sessionStorage does not work for localhost.
},
$httpProvider
);
Merci, vous m'a conduit à une solution, en ce qui concerne que ADFS 3.0 ne accorde que du code. Il m'a fallu des jours de débogage + essais et erreurs, a finalement été en mesure de parvenir à une solution, il va travailler pour moi. L'idée est d'utiliser Identity Server, avec lequel j'ai pu utiliser ADFS 3 en tant que connexion externe et Identity Server pour OAuth. – 12seconds