Hi Malaka , According to the my research there are two ways to request access tokens from Azure AD, Authorization Code Grant Flow and Client Credentials Grant Flow. In the implemented connector (OutlookMail), I am be able to get access token using "Authorization Code Grant Flow".
In the Client Credentials Grant Flow, I have followed these two docs. [1] https://msdn.microsoft.com/en-us/library/azure/dn645543.aspx [2] https://blogs.msdn.microsoft.com/exchangedev/2015/01/21/building-daemon-or-service-apps-with-office-365-mail-calendar-and-contacts-apis-oauth2-client-credential-flow/ Using [1] , I am able to get access token and using this, I could not access Outlook Mail API resources. Then I contacted Microsoft support team and they suggested that "needs to sign the token with a cert" and "A symmetric key is not sufficient for App Tokens accessing Office 365." After that I followed [2] . We need to - Configure a X.509 public cert for your application. - Get the base64 encoded cert value and thumbprint from a .cer X509 public cert. - Update the manifest file in the Azure Management Portal using this value. - Generate un-encoded JWT token. Using this value , I am unable to get access token. It shows error on client_assertion which value is JWT token. [3] https://github.com/mattleib/o365api-as-apponly-webapp [4] http://i1.blogs.msdn.com/b/exchangedev/archive/2015/01/21/building-demon-or-service-apps-with-office-365-mail-calendar-and-contacts-apis-oauth2-client-credential-flow.aspx I tried on generating X.509 certificate, getting base64 encoded values (base64Thumbprint,base64Value and keyid) and JWT token. When we used Client credential flow , manually we have to do these thinks before call endpoint to get access token. After that I tried with windows platform and I got same error in JWT token(client_assertion). Give me any suggestion. *Thank youVivekananthan Sivanayagam* *Associate Software Engineer | WSO2* *E:[email protected] <e%[email protected]>* *M:+94752786138* On Mon, Apr 4, 2016 at 12:20 AM, Vivekananthan Sivanayagam < [email protected]> wrote: > Hi Malaka, > > I tried OAuth2 client credential flow to get access token as > above-mentioned (Service to Service Calls Using Client Credentials [1] ) > and I was able to get access token. using this access token when I tried to > access Outlook Mail API resources, getting "401 Unauthorized" error. > > *ERROR*: > > 401 Unauthorized > Content-Length: 0 > Server: Microsoft-IIS/8.5 > Set-Cookie: exchangecookie=a95b0bfc4c004a05b669839663172bf0; path=/ > WWW-Authenticate: Bearer > client_id="00000002-0000-0ff1-ce00-000000000000", > trusted_issuers="00000001-0000-0000-c000-000000000000@*", > token_types="app_asserted_user_v1 service_asserted_app_v1", > authorization_uri="https://login.windows.net/common/oauth2/authorize", > error="invalid_token",Basic Realm="",Basic Realm="" > request-id: 1ae17dac-e283-47b6-af79-a0aff6a1283a > X-CalculatedBETarget: PS1PR01MB0907.apcprd01.prod.exchangelabs.com > X-BackEndHttpStatus: 401 > x-ms-diagnostics: 2000001;reason="The access token is acquired using an > authentication method that is too weak to allow access for this > application. Presented auth strength was 1, required is > 2.";error_category="invalid_token" > X-DiagInfo: PS1PR01MB0907 > X-BEServer: PS1PR01MB0907 > X-Powered-By: ASP.NET > X-FEServer: SG2PR06CA0019 > X-MSEdge-Ref: Ref A: 9A2ED005E78B485B975983A0AC0B5F34 Ref B: > 122A6D0474C332F38CC3CD2B23B774C6 Ref C: Sun Apr 03 06:02:08 2016 PST > Date: Sun, 03 Apr 2016 13:02:08 GMT > > [1] https://msdn.microsoft.com/en-us/library/azure/dn645543.aspx > > [2] > > https://blogs.msdn.microsoft.com/exchangedev/2015/01/21/building-daemon-or-service-apps-with-office-365-mail-calendar-and-contacts-apis-oauth2-client-credential-flow/ > <https://blogs.msdn.microsoft.com/exchangedev/2015/01/21/building-daemon-or-service-apps-with-office-365-mail-calendar-and-contacts-apis-oauth2-client-credential-flow/> > > [3] > https://msdn.microsoft.com/en-us/office/office365/howto/building-service-apps-in-office-365 > > > > > > *Thank youVivekananthan Sivanayagam* > > *Associate Software Engineer | WSO2* > > *E:[email protected] <e%[email protected]>* > *M:+94752786138 <%2B94752786138>* > > On Thu, Mar 31, 2016 at 10:37 AM, Malaka Silva <[email protected]> wrote: > >> yes >> >> On Thu, Mar 31, 2016 at 10:23 AM, Vivekananthan Sivanayagam < >> [email protected]> wrote: >> >>> Hi Malaka, >>> >>> These are for "Azure AD Token Lifetime" >>> >>> - Access tokens last 1 hour >>> - Refresh tokens last for 14 days, >>> >>> If we use a refresh token within those 14 days, you will receive a new >>> one with a new validity window shifted forward of another 14 days. We can >>> repeat this trick for up to 90 days of total validity, then we’ll have to >>> re-authenticate. >>> >>> When we request additional access tokens with a refresh token , we can >>> get new access token along with refresh token. >>> >>> Do we have to take the new refresh token to replace the old one and >>> store in a registry? >>> >>> >>> >>> >>> *Thank youVivekananthan Sivanayagam* >>> >>> *Associate Software Engineer | WSO2* >>> >>> *E:[email protected] <e%[email protected]>* >>> *M:+94752786138 <%2B94752786138>* >>> >>> On Wed, Mar 30, 2016 at 10:56 PM, Vivekananthan Sivanayagam < >>> [email protected]> wrote: >>> >>>> Hi Malaka, >>>> >>>> As you suggested , there are two types of consent , User Consent >>>> (consent provided by an end user), Admin Consent (consent provided by an >>>> administrator). When we call the Authorization Code Request , we can set >>>> using "prompt" parameter. Possible values are >>>> >>>> - login: The user should be prompted to re-authenticate. >>>> - consent: User consent has been granted, but needs to be updated. >>>> The user should be prompted to consent. >>>> - admin_consent: An administrator should be prompted to consent >>>> on behalf of all users in their organization. >>>> >>>> >>>> >>>> https://login.microsoftonline.com/common/oauth2/authorize?response_type=code&client_id=xxxxxxxxxxxxxxxxx&redirect_uri=http://www.wso2.com&prompt=login >>>> >>>> >>>> [1] https://msdn.microsoft.com/en-us/library/azure/dn645542.aspx >>>> [2] >>>> https://blogs.msdn.microsoft.com/exchangedev/2014/03/25/using-oauth2-to-access-calendar-contact-and-mail-api-in-office-365-exchange-online/ >>>> >>>> >>>> >>>> >>>> >>>> >>>> *Thank youVivekananthan Sivanayagam* >>>> >>>> *Associate Software Engineer | WSO2* >>>> >>>> *E:[email protected] <e%[email protected]>* >>>> *M:+94752786138 <%2B94752786138>* >>>> >>>> On Thu, Mar 17, 2016 at 12:52 PM, Vivekananthan Sivanayagam < >>>> [email protected]> wrote: >>>> >>>>> Hi Malaka, >>>>> >>>>> Noted. >>>>> >>>>> >>>>> >>>>> >>>>> *Thank youVivekananthan Sivanayagam* >>>>> >>>>> *Associate Software Engineer | WSO2* >>>>> >>>>> *E:[email protected] <e%[email protected]>* >>>>> *M:+94752786138 <%2B94752786138>* >>>>> >>>>> On Thu, Mar 17, 2016 at 10:58 AM, Malaka Silva <[email protected]> >>>>> wrote: >>>>> >>>>>> Hi Vivekananthan/Thulasika, >>>>>> >>>>>> In this typical OAUTH flow you mentioned, there is an user >>>>>> interaction. >>>>>> >>>>>> But for SAAS app use cases MS has provided Admin Consent to access >>>>>> the api. >>>>>> >>>>>> IMO we should have both the options in our connectors. >>>>>> >>>>>> [1] >>>>>> https://blogs.msdn.microsoft.com/exchangedev/2014/06/05/managing-user-consent-for-applications-using-office-365-apis/ >>>>>> [2] >>>>>> https://msdn.microsoft.com/en-us/office/office365/howto/common-app-authentication-tasks >>>>>> [3] https://msdn.microsoft.com/en-us/library/office/dn707383.aspx >>>>>> >>>>>> On Thu, Mar 17, 2016 at 1:00 AM, Vivekananthan Sivanayagam < >>>>>> [email protected]> wrote: >>>>>> >>>>>>> Hi All, >>>>>>> >>>>>>> I am going to implement a connector for Microsoft office Outllook >>>>>>> Mail, for that I did a research on authentication part first and I have >>>>>>> shared below what I understood during the initial research. >>>>>>> >>>>>>> The Office 365 API[1] services use Azure Active Directory (Azure AD) >>>>>>> to provide secure authentication to users' Office 365 data. To access >>>>>>> the >>>>>>> Office 365 APIs, we need to register our app with Azure AD[2]. At run >>>>>>> time, >>>>>>> created app can continue to use Azure AD and OAuth to authenticate >>>>>>> application requests[3]. >>>>>>> >>>>>>> Authorization Code Grant Flow Diagram >>>>>>> >>>>>>> [image: Inline image 1] >>>>>>> >>>>>>> 1. The client application starts the flow by redirecting the >>>>>>> user agent to the Azure AD authorization endpoint. The user >>>>>>> authenticates >>>>>>> and consents, if consent is required. >>>>>>> 2. The Azure AD authorization endpoint redirects the user agent >>>>>>> back to the client application with an authorization code. The user >>>>>>> agent >>>>>>> returns authorization code to the client application’s redirect URI. >>>>>>> 3. The client application requests an access token from the >>>>>>> Azure AD token issuance endpoint. It presents the authorization code >>>>>>> to >>>>>>> prove that the user has consented. >>>>>>> 4. The Azure AD token issuance endpoint returns an access token >>>>>>> and a refresh token. The refresh token can be used to request >>>>>>> additional >>>>>>> access tokens. >>>>>>> 5. The client application uses the access token to authenticate >>>>>>> to the Web API. >>>>>>> 6. After authenticating the client application, the web API >>>>>>> returns the requested data [4]. >>>>>>> >>>>>>> [1] >>>>>>> >>>>>>> https://msdn.microsoft.com/en-us/office/office365/howto/rest-api-overview >>>>>>> <https://msdn.microsoft.com/en-us/office/office365/howto/rest-api-overview> >>>>>>> [2] >>>>>>> https://azure.microsoft.com/en-us/documentation/articles/active-directory-integrating-applications/#BKMK_Native >>>>>>> [3] https://msdn.microsoft.com/en-us/library/azure/dn645543.aspx >>>>>>> <https://msdn.microsoft.com/en-us/library/azure/dn645543.aspx> >>>>>>> [4] https://www.youtube.com/watch?v=TjuJE7Zc1Qk >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> *Thank youVivekananthan Sivanayagam* >>>>>>> >>>>>>> *Associate Software Engineer | WSO2* >>>>>>> >>>>>>> *E:[email protected] <e%[email protected]>* >>>>>>> *M:+94752786138 <%2B94752786138>* >>>>>>> >>>>>> >>>>>> >>>>>> >>>>>> -- >>>>>> >>>>>> Best Regards, >>>>>> >>>>>> Malaka Silva >>>>>> Senior Tech Lead >>>>>> M: +94 777 219 791 >>>>>> Tel : 94 11 214 5345 >>>>>> Fax :94 11 2145300 >>>>>> Skype : malaka.sampath.silva >>>>>> LinkedIn : http://www.linkedin.com/pub/malaka-silva/6/33/77 >>>>>> Blog : http://mrmalakasilva.blogspot.com/ >>>>>> >>>>>> WSO2, Inc. >>>>>> lean . enterprise . middleware >>>>>> http://www.wso2.com/ >>>>>> http://www.wso2.com/about/team/malaka-silva/ >>>>>> <http://wso2.com/about/team/malaka-silva/> >>>>>> https://store.wso2.com/store/ >>>>>> >>>>>> Save a tree -Conserve nature & Save the world for your future. Print >>>>>> this email only if it is absolutely necessary. >>>>>> >>>>> >>>>> >>>> >>> >> >> >> -- >> >> Best Regards, >> >> Malaka Silva >> Senior Tech Lead >> M: +94 777 219 791 >> Tel : 94 11 214 5345 >> Fax :94 11 2145300 >> Skype : malaka.sampath.silva >> LinkedIn : http://www.linkedin.com/pub/malaka-silva/6/33/77 >> Blog : http://mrmalakasilva.blogspot.com/ >> >> WSO2, Inc. >> lean . enterprise . middleware >> http://www.wso2.com/ >> http://www.wso2.com/about/team/malaka-silva/ >> <http://wso2.com/about/team/malaka-silva/> >> https://store.wso2.com/store/ >> >> Save a tree -Conserve nature & Save the world for your future. Print this >> email only if it is absolutely necessary. >> > >
_______________________________________________ Architecture mailing list [email protected] https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture
