I am implementing the OAuth2 provider for OWIN and Azure Active Director. FWIW, currently the OpenId Connect option does not meet the requirements for this work.
I get the auth code and return to my response url with the auth_code condition and request a token for the "scheme: //login.windows.net/ {myguid} / oauth2 / token.
// Build up the body for the token request var body = new List<KeyValuePair<string, string>>(); body.Add(new KeyValuePair<string, string>("grant_type", "authorization_code")); body.Add(new KeyValuePair<string, string>("code", code)); body.Add(new KeyValuePair<string, string>("redirect_uri", redirectUri)); body.Add(new KeyValuePair<string, string>("client_id", Options.ClientId)); body.Add(new KeyValuePair<string, string>("client_secret", Options.ClientSecret)); // Request the token HttpResponseMessage tokenResponse = await httpClient.PostAsync(TokenEndpoint, new FormUrlEncodedContent(body)); string text = await tokenResponse.Content.ReadAsStringAsync(); tokenResponse.EnsureSuccessStatusCode();
I get this error:
{"error":"invalid_resource","error_description":"AADSTS50001: Resource identifier is not provided. Trace ID: 227f2af8-0837-4f22-ac0f-a09b3f9a6d50 Correlation ID: 3d783f11-44d0-4efa-8831-3dd581d653ed Timestamp: 2014-08-08 21:59:49Z","error_codes":[50001],"timestamp":"2014-08-08 21:59:49Z","trace_id":"227f2af8-0837-4f22-ac0f-a09b3f9a6d50","correlation_id":"3d783f11-44d0-4efa-8831-3dd581d653ed"}
OK, I am adding a resource parameter:
// Build up the body for the token request var body = new List<KeyValuePair<string, string>>(); body.Add(new KeyValuePair<string, string>("grant_type", "authorization_code")); body.Add(new KeyValuePair<string, string>("code", code)); body.Add(new KeyValuePair<string, string>("redirect_uri", redirectUri)); body.Add(new KeyValuePair<string, string>("client_id", Options.ClientId)); body.Add(new KeyValuePair<string, string>("client_secret", Options.ClientSecret)); body.Add(new KeyValuePair<string, string>("resource", "https://myappid")); {"error":"invalid_request","error_description":"AADSTS90027: The client 'xxxxx' and resource 'https://myappid' identify the same application. Trace ID: 6c77f123-d75f-43a9-8117-b3f372891ee4 Correlation ID: d9081f8b-b690-4478-bf15-55325a9736ec Timestamp: 2014-08-08 21:48:34Z","error_codes":[90027],"timestamp":"2014-08-08 21:48:34Z","trace_id":"6c77f123-d75f-43a9-8117-b3f372891ee4","correlation_id":"d9081f8b-b690-4478-bf15-55325a9736ec"}
therefore, I must have the correct application id associated with my client id. hrrmph! I am clearly doing something wrong, but just can't see it. Any suggestions?