Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
77 changes: 77 additions & 0 deletions README-localized/README-es-es.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
---
page_type: sample
products:
- office-outlook
- office-365
languages:
- python
extensions:
contentType: samples
technologies:
- Actionable messages
createdDate: 11/17/2016 2:43:33 PM
---
# Ejemplo de comprobación de token de solicitud de acción en Python

Los servicios pueden enviar mensajes accionables a los usuarios para que realicen tareas sencillas en sus servicios. Cuando un usuario realiza una de las acciones de un mensaje, Microsoft enviará una solicitud de acción al servicio. La solicitud de Microsoft contendrá un token de portador en el encabezado de la autorización. En este ejemplo de código se muestra cómo comprobar el token para garantizar que la solicitud de acción es de Microsoft, y usar las notificaciones del token para validar la solicitud.

@app.route("/api/expense", methods = ["POST"])
def api_post_expense():
# Obtener el token del encabezado de autorización

authorization = request.headers['Authorization']
token_type, token = authorization.rsplit(' ', 1)

if token_type.lower() != "bearer":
abort(401)

validator = ActionableMessageTokenValidator()
result = ActionableMessageTokenValidationResult()

probar:
# Esto validará que el token fue emitido por Microsoft para la
# dirección URL de destino especificada, es decir, el destino coincide con el público deseado (notificación "aud" de token)
#
# En su código, reemplace https://api.contoso.com por la dirección URL base del servicio.
# Por ejemplo, si la dirección URL del servicio de destino es https://api.xyz.com/finance/expense?id=1234,
# reemplace https://api.contoso.com por https://api.xyz.com

result = validator.validate_token(token, "https://api.contoso.com")

except InvalidActionableMessageTokenError as e:
print(e)
abort(401)

# Ya tenemos un token válido. Ahora verificaremos que el remitente y el ejecutante de la acción sean quiénes
# esperamos. El remitente es la identidad de la entidad que envió inicialmente el mensaje
# que requiere acción, y el ejecutante de la acción es la identidad del usuario que realmente
# realizó la acción (notificación "sub" de token)
#
# Debería reemplazar el código siguiente con su propia lógica de validación
# En este ejemplo, comprobamos que el correo electrónico es enviado por expense@contoso.com (remitente esperado)
# y el correo electrónico de la persona que realizó la acción es john@contoso.com (destinatario esperado)
#
# También debería devolver el encabezado CARD-ACTION-STATUS en la respuesta.
# El valor del encabezado se mostrará al usuario.
if result.sender.lower() != 'expense@contoso.com' or \
result.action_performer.lower() != 'john@contoso.com'):
resp = flask.Response('')
resp.headers['CARD-ACTION-STATUS'] = 'Remitente no válido o no se permite el ejecutante de la acción.'
return resp, 403

# Código de lógica empresarial adicional para procesar el informe de gastos.
resp = flask.Response('')
resp.headers['CARD-ACTION-STATUS'] = 'Se ha aprobado el gasto.'
return resp

El código de ejemplo usa la siguiente biblioteca para la validación de JWT.

[PyJWT](https://pypi.python.org/pypi/PyJWT/1.5.0)

Puede encontrar más información sobre los mensajes accionables de Outlook [aquí](https://dev.outlook.com/actions).

## Derechos de autor
Copyright (c) 2017 Microsoft. Todos los derechos reservados.


Este proyecto ha adoptado el [Código de conducta de código abierto de Microsoft](https://opensource.microsoft.com/codeofconduct/). Para obtener más información, vea [Preguntas frecuentes sobre el código de conducta](https://opensource.microsoft.com/codeofconduct/faq/) o póngase en contacto con [opencode@microsoft.com](mailto:opencode@microsoft.com) si tiene otras preguntas o comentarios.
77 changes: 77 additions & 0 deletions README-localized/README-fr-fr.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
---
page_type: sample
products:
- office-outlook
- office-365
languages:
- python
extensions:
contentType: samples
technologies:
- Actionable messages
createdDate: 11/17/2016 2:43:33 PM
---
# Exemple Python de vérification du jeton de demande d’action

Les services peuvent envoyer des messages actionnables aux utilisateurs pour effectuer des tâches simples sur leurs services. Lorsqu’un utilisateur effectue l’une des actions dans un message, une demande d’action est envoyée au service par Microsoft. La demande de Microsoft contient un jeton du porteur dans l’en-tête d'autorisation. Cet exemple de code présente comment vérifier le jeton pour vous assurer que la demande d’action provient de Microsoft et utiliser les revendications dans le jeton pour valider la demande.

@app.route("/api/dépense", methods = ["POST"])
def api_post_expense():
# Obtenir le jeton auprès de l'en-tête d’autorisation

autorisation = request.headers['Authorization']
token_type, token = authorization.rsplit(' ', 1)

if token_type.lower() != "porteur":
abort(401)

validateur = ActionableMessageTokenValidator()
résultat = ActionableMessageTokenValidationResult()

essayer :
# Ceci valide l'émission du jeton par Microsoft pour le
# l'URL cible spécifiée, autrement dit, la cible correspond à l’audience prévue (demande « aud » dans le jeton)
#
# Dans votre code, remplacez https://api.contoso.com par l’URL de base de votre service.
#/ Par exemple, si l’URL cible du service est https://api.xyz.com/finance/expense ?id=1234,
# remplacez https://api.contoso.com par https://api.xyz.com

résultat = validator.validate_token(token, "https://api.contoso.com")

except InvalidActionableMessageTokenError as e:
print(e)
abort(401)

# Un jeton valide existe. Vous allez maintenant vérifier que l’expéditeur et l'exécutant de l’action sont ceux
# prévus. L’expéditeur correspond à l’identité de l’entité qui a initialement envoyé le Message
# actionnable et l’exécutant de l’action correspond à l’identité de l’utilisateur qui a réellement
# réalisé l’action (« sous- » revendication dans le jeton).
#
# Vous devez remplacer le code ci-dessous par votre propre logique de validation.
# Dans cet exemple, vous vérifierez que le message électronique est envoyé par expense@contoso.com (expéditeur prévu)
# et que l’adresse de courrier de la personne qui a effectué l’action est john@contoso.com (destinataire prévu)
#
# Vous devez également retourner l’en-tête CARD-ACTION-STATUS dans la réponse.
# La valeur de l’en-tête s’affiche pour l’utilisateur.
if result.sender.lower() != 'expense@contoso.com' or \
result.action_performer.lower() != 'john@contoso.com'):
resp = flask.Response('')
resp.headers['CARD-ACTION-STATUS'] = 'Expéditeur non valide ou l'exécutant de l'action n'est pas autorisé.'
return resp, 403

# Code de logique métier plus précis ici pour traiter le rapport sur les dépenses.
resp = flask.Response('')
resp.headers['CARD-ACTION-STATUS'] = 'La dépense a été approuvée.'
return resp

L’exemple de code utilise la bibliothèque suivante pour la validation JWT.

[PyJWT](https://pypi.python.org/pypi/PyJWT/1.5.0)

D'autres informations sur les Messages actionnables d'Outlook sont disponibles [ici](https://dev.outlook.com/actions).

## Copyright
Copyright (c) 2017 Microsoft. Tous droits réservés.


Ce projet a adopté le [code de conduite Open Source de Microsoft](https://opensource.microsoft.com/codeofconduct/). Pour en savoir plus, reportez-vous à la [FAQ relative au code de conduite](https://opensource.microsoft.com/codeofconduct/faq/) ou contactez [opencode@microsoft.com](mailto:opencode@microsoft.com) pour toute question ou tout commentaire.
77 changes: 77 additions & 0 deletions README-localized/README-ja-jp.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
---
page_type: sample
products:
- office-outlook
- office-365
languages:
- python
extensions:
contentType: samples
technologies:
- Actionable messages
createdDate: 11/17/2016 2:43:33 PM
---
# アクション要求トークンの検証 Python サンプル

サービスは、アクション可能メッセージをユーザーに送信して、サービスに対する単純なタスクを完了することができます。ユーザーがメッセージに含まれるいずれかのアクションを実行すると、Microsoft によりアクション要求がサービスに対して送信されます。Microsoft からの要求には、認証ヘッダーにベアラー トークンが含まれています。このコード サンプルでは、トークンを検証して、アクション要求が Microsoft からのものであることを確認し、トークンの要求を使用して要求を検証する方法を示します。

@app.route("/api/expense", methods = ["POST"])
def api_post_expense():
# Get the token from the Authorization header

authorization = request.headers['Authorization']
token_type, token = authorization.rsplit(' ', 1)

if token_type.lower() != "bearer":
abort(401)

validator = ActionableMessageTokenValidator()
result = ActionableMessageTokenValidationResult()

try:
# This will validate that the token has been issued by Microsoft for the
# specified target URL i.e. the target matches the intended audience (“aud” claim in token)
#
# In your code, replace https://api.contoso.com with your service’s base URL.
# For example, if the service target URL is https://api.xyz.com/finance/expense?id=1234,
# then replace https://api.contoso.com with https://api.xyz.com

result = validator.validate_token(token, "https://api.contoso.com")

except InvalidActionableMessageTokenError as e:
print(e)
abort(401)

# We have a valid token.We will now verify that the sender and action performer are who
# we expect.The sender is the identity of the entity that initially sent the Actionable
# Message, and the action performer is the identity of the user who actually
# took the action (“sub” claim in token).
#
# You should replace the code below with your own validation logic
# In this example, we verify that the email is sent by expense@contoso.com (expected sender)
# and the email of the person who performed the action is john@contoso.com (expected recipient)
#
# You should also return the CARD-ACTION-STATUS header in the response.
# The value of the header will be displayed to the user.
if result.sender.lower() != 'expense@contoso.com' or \
result.action_performer.lower() != 'john@contoso.com'):
resp = flask.Response('')
resp.headers['CARD-ACTION-STATUS'] = 'Invalid sender or the action performer is not allowed.'
return resp, 403

# Further business logic code here to process the expense report.
resp = flask.Response('')
resp.headers['CARD-ACTION-STATUS'] = 'The expense was approved.'
return resp

このコード サンプルでは、JWT 認証に次のライブラリを使用しています。

[PyJWT](https://pypi.python.org/pypi/PyJWT/1.5.0)

Outlook のアクション可能メッセージの詳細については、[こちら](https://dev.outlook.com/actions)をクリックしてください。

## 著作権
Copyright (c) 2017 Microsoft.All rights reserved.


このプロジェクトでは、[Microsoft オープン ソース倫理規定](https://opensource.microsoft.com/codeofconduct/)が採用されています。詳細については、「[倫理規定の FAQ](https://opensource.microsoft.com/codeofconduct/faq/)」を参照してください。また、その他の質問やコメントがあれば、[opencode@microsoft.com](mailto:opencode@microsoft.com) までお問い合わせください。
77 changes: 77 additions & 0 deletions README-localized/README-pt-br.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
---
page_type: sample
products:
- office-outlook
- office-365
languages:
- python
extensions:
contentType: samples
technologies:
- Actionable messages
createdDate: 11/17/2016 2:43:33 PM
---
# Exemplo em Python de verificação de token de solicitação de ação

Serviços podem enviar mensagens acionáveis para usuários para que os mesmos completem tarefas simples em oposição aos seus serviços. Quando um usuário executar uma das ações em uma mensagem, uma solicitação de ação será enviada pela Microsoft para o serviço. A solicitação da Microsoft conterá um token de portador no cabeçalho de autorização. Este exemplo de código mostra como verificar o token para garantir que a solicitação de ação veio mesmo da Microsoft e como usar as declarações do token para validar a solicitação.

@app.route("/api/expense", methods = ["POST"])
def api_post_expense():
# Solicite um novo token do servidor de autorização.

autorização = solicitação headers ['Autorização']
token_type, token = authorization.rsplit(' ', 1)

if token_type.lower() != "bearer":
abort(401)

validator = ActionableMessageTokenValidator()
result = ActionableMessageTokenValidationResult()

tentar:
# Isto verificará se o token foi emitido pela Microsoft para o
# URL de destino especificada, ou seja, o destino corresponde à audiência desejada (declaração de "AUD" no token)
#
# Em seu código, substitua https://api.contoso.com pela URL base do seu serviço.
# Por exemplo, se a URL de destino do serviço for https://api.xyz.com/finance/expense?id=1234,
# em seguida, substitua https://api.contoso.com por https://api.xyz.com

result = validator.validate_token(token, "https://api.contoso.com")

exceto InvalidActionableMessageTokenError como e:
print(e)
abort(401)

# Temos um token válido. Agora, verificaremos se o remetente e a ação executores são quem
# Esperamos. O remetente é a identidade da entidade que enviou a ação
# Mensagem, e o executor da ação é a identidade do usuário que
# tomou a ação ("sub" declaração no token).
#
# Você deve substituir o código abaixo por sua própria lógica de validação
# Neste exemplo, verificamos se o email foi enviado por expense@contoso.com (remetente esperado)
# e o email da pessoa que executou a ação é john@contoso.com (destinatário esperado)
#
# Você também deve retornar o cabeçalho do STATUS da ação de cartão na resposta.
# O valor do cabeçalho será exibido para o usuário.
se result.sender.lower() != 'expense@contoso.com' or \
result.action_performer.lower() != 'john@contoso.com'):
resp = flask.Response('')
resp.headers [' CARD-ACTION-STATUS '] = ' remetente inválido ou o executor da ação não é permitido. '
retornar resp, 403

# Outro código de lógica de negócios aqui para processar o relatório de despesas.
resp = flask.Response('')
resp.headers [' CARD-ACTION-STATUS '] = ' a despesa foi aprovada. '
retornar resp

O exemplo de código está usando a biblioteca a seguir para a validação de JWT.

[PyJWT](https://pypi.python.org/pypi/PyJWT/1.5.0)

Mais informações as Mensagens Acionáveis do Outlook estão disponíveis](https://dev.outlook.com/actions)aqui](https://dev.outlook.com/actions).

## Direitos autorais
Copyright (c) 2017 Microsoft. Todos os direitos reservados.


Este projeto adotou o [Código de Conduta do Código Aberto da Microsoft](https://opensource.microsoft.com/codeofconduct/). Para saber mais, confira [Perguntas frequentes sobre o Código de Conduta](https://opensource.microsoft.com/codeofconduct/faq/) ou contate [opencode@microsoft.com](mailto:opencode@microsoft.com) se tiver outras dúvidas ou comentários.
Loading