Re: [OAUTH-WG] Using OAuth to get a JWT/SAML token

Lewis Adam-CAL022 <Adam.Lewis@motorolasolutions.com> Thu, 19 April 2012 22:12 UTC

Return-Path: <Adam.Lewis@motorolasolutions.com>
X-Original-To: oauth@ietfa.amsl.com
Delivered-To: oauth@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 55D8721F85D2 for <oauth@ietfa.amsl.com>; Thu, 19 Apr 2012 15:12:11 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.466
X-Spam-Level:
X-Spam-Status: No, score=-0.466 tagged_above=-999 required=5 tests=[AWL=-0.000, BAYES_00=-2.599, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_LOW=-1, UNRESOLVED_TEMPLATE=3.132]
Received: from mail.ietf.org ([12.22.58.30]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id uspqk5Bo3qG3 for <oauth@ietfa.amsl.com>; Thu, 19 Apr 2012 15:12:10 -0700 (PDT)
Received: from va3outboundpool.messaging.microsoft.com (va3ehsobe001.messaging.microsoft.com [216.32.180.11]) by ietfa.amsl.com (Postfix) with ESMTP id D315521F85AA for <oauth@ietf.org>; Thu, 19 Apr 2012 15:12:09 -0700 (PDT)
Received: from mail71-va3-R.bigfish.com (10.7.14.241) by VA3EHSOBE002.bigfish.com (10.7.40.22) with Microsoft SMTP Server id 14.1.225.23; Thu, 19 Apr 2012 22:12:09 +0000
Received: from mail71-va3 (localhost [127.0.0.1]) by mail71-va3-R.bigfish.com (Postfix) with ESMTP id 0AF4E3A037C for <oauth@ietf.org>; Thu, 19 Apr 2012 22:12:09 +0000 (UTC)
X-SpamScore: -26
X-BigFish: VPS-26(zzbb2dI9371Ic89bhc857h98dK14ffIzz1202hzz1033IL8275bh8275dhz2fh2a8h683h839hd25h)
X-Forefront-Antispam-Report: CIP:192.160.210.20; KIP:(null); UIP:(null); IPV:NLI; H:il27msg01.am.mot-solutions.com; RD:il27msg01.mot-solutions.com; EFVD:NLI
Received-SPF: pass (mail71-va3: domain of motorolasolutions.com designates 192.160.210.20 as permitted sender) client-ip=192.160.210.20; envelope-from=Adam.Lewis@motorolasolutions.com; helo=il27msg01.am.mot-solutions.com ; olutions.com ;
Received: from mail71-va3 (localhost.localdomain [127.0.0.1]) by mail71-va3 (MessageSwitch) id 133487352795548_29149; Thu, 19 Apr 2012 22:12:07 +0000 (UTC)
Received: from VA3EHSMHS022.bigfish.com (unknown [10.7.14.253]) by mail71-va3.bigfish.com (Postfix) with ESMTP id 10A5438006E for <oauth@ietf.org>; Thu, 19 Apr 2012 22:12:07 +0000 (UTC)
Received: from il27msg01.am.mot-solutions.com (192.160.210.20) by VA3EHSMHS022.bigfish.com (10.7.99.32) with Microsoft SMTP Server (TLS) id 14.1.225.23; Thu, 19 Apr 2012 22:12:04 +0000
Received: from il27msg01.am.mot-solutions.com (ct11vts01.am.mot.com [10.177.16.159]) by il27msg01.am.mot-solutions.com (8.14.3/8.14.3) with ESMTP id q3JMNiaD028030 for <oauth@ietf.org>; Thu, 19 Apr 2012 17:23:44 -0500 (CDT)
Received: from db3outboundpool.messaging.microsoft.com (db3ehsobe006.messaging.microsoft.com [213.199.154.144]) by il27msg01.am.mot-solutions.com (8.14.3/8.14.3) with ESMTP id q3JMNgFf028027 (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=FAIL) for <oauth@ietf.org>; Thu, 19 Apr 2012 17:23:43 -0500 (CDT)
Received: from mail120-db3-R.bigfish.com (10.3.81.229) by DB3EHSOBE006.bigfish.com (10.3.84.26) with Microsoft SMTP Server id 14.1.225.23; Thu, 19 Apr 2012 22:11:55 +0000
Received: from mail120-db3 (localhost [127.0.0.1]) by mail120-db3-R.bigfish.com (Postfix) with ESMTP id D32213C04E5 for <oauth@ietf.org.FOPE.CONNECTOR.OVERRIDE>; Thu, 19 Apr 2012 22:11:55 +0000 (UTC)
Received: from mail120-db3 (localhost.localdomain [127.0.0.1]) by mail120-db3 (MessageSwitch) id 1334873512269357_22253; Thu, 19 Apr 2012 22:11:52 +0000 (UTC)
Received: from DB3EHSMHS012.bigfish.com (unknown [10.3.81.237]) by mail120-db3.bigfish.com (Postfix) with ESMTP id 348EF1A05E3; Thu, 19 Apr 2012 22:11:52 +0000 (UTC)
Received: from BL2PRD0410HT002.namprd04.prod.outlook.com (157.56.240.85) by DB3EHSMHS012.bigfish.com (10.3.87.112) with Microsoft SMTP Server (TLS) id 14.1.225.23; Thu, 19 Apr 2012 22:11:51 +0000
Received: from BL2PRD0410MB363.namprd04.prod.outlook.com ([169.254.3.84]) by BL2PRD0410HT002.namprd04.prod.outlook.com ([10.255.99.37]) with mapi id 14.16.0143.004; Thu, 19 Apr 2012 22:11:51 +0000
From: Lewis Adam-CAL022 <Adam.Lewis@motorolasolutions.com>
To: Paul Madsen <paul.madsen@gmail.com>, "jricher@mitre.org" <jricher@mitre.org>
Thread-Topic: [OAUTH-WG] Using OAuth to get a JWT/SAML token
Thread-Index: AQHNHng8daEyP8MLBE2BQ7YBnfHZD5ais9Cw
Date: Thu, 19 Apr 2012 22:11:50 +0000
Message-ID: <59E470B10C4630419ED717AC79FCF9A9097843@BL2PRD0410MB363.namprd04.prod.outlook.com>
References: <5jrlua1y80mdxtvpmygf5tp1.1334872982862@email.android.com>
In-Reply-To: <5jrlua1y80mdxtvpmygf5tp1.1334872982862@email.android.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-originating-ip: [150.130.9.149]
Content-Type: multipart/alternative; boundary="_000_59E470B10C4630419ED717AC79FCF9A9097843BL2PRD0410MB363na_"
MIME-Version: 1.0
X-MS-Exchange-CrossPremises-AuthAs: Internal
X-MS-Exchange-CrossPremises-AuthMechanism: 04
X-MS-Exchange-CrossPremises-AuthSource: BL2PRD0410HT002.namprd04.prod.outlook.com
X-MS-Exchange-CrossPremises-SCL: -1
X-MS-Exchange-CrossPremises-messagesource: StoreDriver
X-MS-Exchange-CrossPremises-BCC:
X-MS-Exchange-CrossPremises-rules-execution-history: Sample Spam Submissions
X-MS-Exchange-CrossPremises-processed-by-journaling: Journal Agent
X-MS-Exchange-CrossPremises-ContentConversionOptions: False;00160000;True;;
X-OrganizationHeadersPreserved: BL2PRD0410HT002.namprd04.prod.outlook.com
X-FOPE-CONNECTOR: Id%0$Dn%*$RO%0$TLS%0$FQDN%$TlsDn%
X-FOPE-CONNECTOR: Id%1294$Dn%GMAIL.COM$RO%2$TLS%3$FQDN%msgate.mot-solutions.com$TlsDn%
X-FOPE-CONNECTOR: Id%1294$Dn%MITRE.ORG$RO%2$TLS%3$FQDN%msgate.mot-solutions.com$TlsDn%
X-FOPE-CONNECTOR: Id%1294$Dn%IETF.ORG$RO%2$TLS%3$FQDN%msgate.mot-solutions.com$TlsDn%
X-CFilter-Loop: Reflected
X-OriginatorOrg: motorolasolutions.com
Cc: "oauth@ietf.org" <oauth@ietf.org>
Subject: Re: [OAUTH-WG] Using OAuth to get a JWT/SAML token
X-BeenThere: oauth@ietf.org
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: OAUTH WG <oauth.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/oauth>, <mailto:oauth-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/oauth>
List-Post: <mailto:oauth@ietf.org>
List-Help: <mailto:oauth-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/oauth>, <mailto:oauth-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 19 Apr 2012 22:12:11 -0000

Hi Paul,

So by saying ‘more easily’ then there is nothing really inherently preventing a native implementation from making the HTTP calls to the AS directly, right?

My use cases are a bit atypical from the web service driven models that you guys are solving, but I think the technology should still fit.  The RS that my native client is talking to is *not* a web service (I realize I’m not outside the bounds of OAuth-proper here).  But it’s easy enough for me to use OAuth to get an access-token and include that in my message between my native client and my (non-web service) RS.  My RS can still introspect it against an OAuth STS.

These native apps I’m speaking of, I’m attempting to retrofit with OAuth, and today they already have native interfaces for accepting a user’s logon and credentials … to pop a web browser would not be intuitive to my customer base.

I don’t see any reason I can’t implement this native within my client, just want to be sure since the browser trick is such a prominent trend, I want to be sure that there’s no gotcha I haven’t thought of.

Tx!
adam

From: Paul Madsen [mailto:paul.madsen@gmail.com]
Sent: Thursday, April 19, 2012 5:03 PM
To: Lewis Adam-CAL022; jricher@mitre.org
Cc: oauth@ietf.org
Subject: Re: [OAUTH-WG] Using OAuth to get a JWT/SAML token

Using the browser as part of the AS interaction allows you to more easily collect the users consent.

Once you get the tokens based on that consent, everything is 'RESTful'



-------- Original message --------
Subject: Re: [OAUTH-WG] Using OAuth to get a JWT/SAML token
From: Lewis Adam-CAL022 <Adam.Lewis@motorolasolutions.com>
To: Justin Richer <jricher@mitre.org>
CC: Re: [OAUTH-WG] Using OAuth to get a JWT/SAML token

Hi Justin,

There is one thing I have not understood about the whole external browser vs. embedded browser guidance … and that is, why is *any* browser needed?  Java for example has an HTTP library, and OAuth is RESTful.  So why is it necessary to require the web browser at all, whether external or embedded?  Why can’t my native client make RESTful API calls to the AS and RS natively?

Tx!
adam

From: Justin Richer [mailto:jricher@mitre.org]
Sent: Friday, April 13, 2012 11:38 AM
To: Lewis Adam-CAL022
Cc: oauth@ietf.org
Subject: Re: [OAUTH-WG] Using OAuth to get a JWT/SAML token

If the mobile device has a web browser (such as a smart phone), then this is pretty easy, and you've got a couple of options.

One of the best options when the token is on behalf of an end user is, in my opinion, to use the authorization code flow like this: First, register what's called a "public client" with your server -- so you'll get an ID but not a client secret. With that client ID, register a custom-scheme callback URI, like "myapp://oauthcallback", and register your app on the device as the handler for "myapp".

In your application, to start things off, you fire off a web browser to the authorization server's authorization endpoint. The user logs in to the authorization server through the web browser, approves this copy of your app, and gets redirected to "myapp://oauthcallback?code=basdf132". Your app grabs the "myapp://" url and plucks the authorization code off the end of it. Your app then takes that code and sends it in the background to the token endpoint to exchange for a token.

Some key points:

1) You need to have access to a web browser on the platform, and it's considered best practice to push the user to the external browser application on the platform instead of embedding one. There are a couple paragraphs in the spec's security considerations section that talk about this.
2) Your app is "public" because you can't publish it with a secret at configuration time. It can, however, keep the tokens secret at runtime.
3) You need to be very careful with how you store the tokens on the device -- they need to be in a trusted space where other apps on the device can't sniff them out.
4) Another app can try to register "myapp://" and intercept your code on the way through, so make sure your codes are all one time use and short lived.

None of this is just theoretically possible, people are doing it today. What libraries and stuff you'd be after depends wholly on your platform (both server and client side).

 -- Justin

On 04/12/2012 03:01 PM, Lewis Adam-CAL022 wrote:
Hi all,

I’ve been talking to some of you off line about this already, but I need some help in terms of implementation.  I would like to use OAuth as a means to get either a JWT or SAML token to a client running on a handheld device.  This is something that I’m looking to prototype (as part of a larger project) beginning this week.  So, it is important to me to understand the divide between what is theoretically possible and what is actually possible.

Anybody aware of any implementations out there, either vendor or open source, that I can use for this?

Tx!
adam





_______________________________________________

OAuth mailing list

OAuth@ietf.org<mailto:OAuth@ietf.org>

https://www.ietf.org/mailman/listinfo/oauth